Risposte:
Modo più semplice possibile (grazie Aaron Patterson / n0kada):
ruby -run -e httpd . -p 9090
Modo alternativo e più complesso:
ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
Anche il primo comando è difficile da ricordare, quindi ho solo questo nel mio .bashrc
:
function serve {
port="${1:-3000}"
ruby -run -e httpd . -p $port
}
Serve la directory corrente sulla porta 3000 per impostazione predefinita, ma puoi anche specificare la 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
guarda ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html . Sta eseguendo il metodo httpd dalla un
libreria standard ruby, quindi richiede un.
ruby -run -e httpd . -p 9090 &
Se vuoi riportarlo in primo piano, usa fg
.
Non ho mai visto niente di così compatto come
python3 -m http.server
Facoltativamente, puoi aggiungere un numero di porta alla fine:
python3 -m http.server 9000
Come Aaron Patterson ha twittato oggi, puoi fare:
ruby -run -e httpd . -p 5000
E puoi anche impostare l'indirizzo di bind aggiungendo -b 127.0.0.1
Funziona con Ruby 1.9.2 e versioni successive.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Questo può essere o meno quello che vuoi, ma è così bello che ho dovuto condividerlo.
L'ho usato in passato per servire il file system. Forse potresti modificarlo o semplicemente accettare che serve a tutto.
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}'
L'ho trovato qui
Chris
Puoi usare la sinatra
gemma, anche se non fa alcun elenco di directory per te, serve file:
require 'sinatra' # gem
set :public_folder, '.'
quindi eseguilo come file, se in 1.8 aggiungi prima "rubygems" all'inizio.
Dopo averlo eseguito, l'URL è come
http: // localhost: 4567 / nome_file
dovrebbe risolversi nel file "./file_name".
http: // localhost: 4567 non funzionerà tuttavia, poiché non "esegue" elenchi di directory. Consulta https://stackoverflow.com/a/12115019/32453 per una soluzione alternativa.