birisi bana bir ipucu verebilir mi, şu anki dizine Ruby ile komut satırından nasıl hizmet edilir? Sistem çapında bir konfigürasyona sahip olsam (örn. mime türleri) ve her dizinden basitçe başlatabilirsem harika olurdu.
Yanıtlar:
Mümkün olan en basit yol (teşekkürler Aaron Patterson / n0kada):
ruby -run -e httpd . -p 9090
Alternatif, daha karmaşık bir yol:
ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
İlk komutun bile hatırlanması zor, bu yüzden şu bende var .bashrc
:
function serve {
port="${1:-3000}"
ruby -run -e httpd . -p $port
}
Geçerli dizini varsayılan olarak 3000 numaralı bağlantı noktasında sunar , ancak bağlantı noktasını da belirtebilirsiniz:
~ $ 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
bakmak ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html . un
Ruby standart kitaplığından httpd yöntemini çalıştırıyor , bu nedenle un gerektirir.
ruby -run -e httpd . -p 9090 &
Ön plana geri getirmek istiyorsanız, kullanın fg
.
Hiç bu kadar kompakt bir şey görmedim
python3 -m http.server
İsteğe bağlı olarak sona bir bağlantı noktası numarası ekleyebilirsiniz:
python3 -m http.server 9000
As Aaron Patterson dışarı tweeted bugün Yapabileceğiniz:
ruby -run -e httpd . -p 5000
Bağlama adresini de ekleyerek ayarlayabilirsiniz. -b 127.0.0.1
Ruby 1.9.2 ve üstü ile çalışır.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
İstediğin şey bu olabilir de olmayabilir de ama o kadar havalı ki paylaşmak zorunda kaldım.
Bunu geçmişte dosya sistemine hizmet etmek için kullandım. Belki onu değiştirebilir ya da her şeye hizmet ettiğini kabul edebilirsiniz.
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}'
Onu burada buldum
Chris
Gem'i kullanabilirsiniz sinatra
, ancak sizin için herhangi bir dizin listesi yapmasa da dosyalar sunar:
require 'sinatra' # gem
set :public_folder, '.'
sonra bunu bir dosya olarak çalıştırın, eğer 1.8'de ilk önce 'rubygems' gerektirirse.
Çalıştırdıktan sonra url gibi
http: // localhost: 4567 / dosya_adı
"./file_name" dosyasına çözümlenmelidir.
Ancak http: // localhost: 4567 , dizin listelerini "yapmadığı" için çalışmayacaktır. Orada bir çözüm için https://stackoverflow.com/a/12115019/32453 adresine bakın .
python3 -m http.server
veya varsayılan bağlantı noktası 8000'i kullanmak istemiyorsanız
python3 -m http.server 3333
veya yalnızca localhost'tan bağlantılara izin vermek istiyorsanız
python3 -m http.server --bind 127.0.0.1
Dokümanlara bakın .