Respostas:
Maneira mais simples possível (obrigado Aaron Patterson / n0kada):
ruby -run -e httpd . -p 9090
Forma alternativa e mais complexa:
ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
Mesmo o primeiro comando é difícil de lembrar, então eu só tenho isso no meu .bashrc
:
function serve {
port="${1:-3000}"
ruby -run -e httpd . -p $port
}
Ele serve o diretório atual na porta 3000 por padrão, mas você também pode especificar a porta:
~ $ cd tmp
~/tmp $ serve # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000 # ~/www served on port 5000
ruby -run -e httpd . -p 9090
olhe para ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html . Ele está executando o método httpd da un
biblioteca padrão do ruby, portanto, requer un.
ruby -run -e httpd . -p 9090 &
Se você quiser trazê-lo de volta para o primeiro plano, use fg
.
Eu nunca vi nada tão compacto quanto
python3 -m http.server
Você pode opcionalmente adicionar um número de porta ao final:
python3 -m http.server 9000
Como Aaron Patterson tweetou hoje, você pode fazer:
ruby -run -e httpd . -p 5000
E você também pode definir o endereço de ligação adicionando -b 127.0.0.1
Funciona com Ruby 1.9.2 e superior.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Isso pode ou não ser bem o que você deseja, mas é tão legal que eu apenas tive que compartilhar.
Eu usei isso no passado para servir ao sistema de arquivos. Talvez você possa modificá-lo ou simplesmente aceitar que serve a tudo.
ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'
Eu encontrei aqui
Chris
Você pode usar o sinatra
gem, embora ele não faça nenhuma listagem de diretório para você, ele serve os arquivos:
require 'sinatra' # gem
set :public_folder, '.'
em seguida, execute-o como um arquivo, se em 1.8 adicione require 'rubygems' ao topo primeiro.
Depois de executá-lo, o URL é como
http: // localhost: 4567 / file_name
deve resolver para o arquivo "./file_name".
http: // localhost: 4567 não funcionará no entanto, uma vez que não "faz" listagens de diretório. Consulte https://stackoverflow.com/a/12115019/32453 para uma solução alternativa.
python3 -m http.server
ou se você não quiser usar a porta padrão 8000
python3 -m http.server 3333
ou se você deseja permitir conexões de localhost apenas
python3 -m http.server --bind 127.0.0.1
Veja a documentação .