誰かが私にヒントを教えてもらえますか、コマンドラインからルビーで現在のディレクトリを提供する方法は?システム全体の構成(たとえば、mime-types)を使用して、すべてのディレクトリから単純に起動できる場合、それは素晴らしいことです。
最も簡単な方法( Aaron Patterson /n0kadaに感謝):
Ruby -run -e httpd . -p 9090
別のより複雑な方法:
Ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
最初のコマンドでさえ覚えにくいので、.bashrc
:
function serve {
port="${1:-3000}"
Ruby -run -e httpd . -p $port
}
デフォルトでは、ポート3000で現在のディレクトリを提供しますが、ポートを指定することもできます。
~ $ cd tmp
~/tmp $ serve # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000 # ~/www served on port 5000
Aaron Pattersonツイートした 今日は次のことができます:
Ruby -run -e httpd . -p 5000
-b 127.0.0.1
を追加することにより、バインドアドレスも設定できます
Ruby 1.9.2以降で動作します。
こんなにコンパクトなものを見たことがない
python -m SimpleHTTPServer
rubyの場合、Chrisの答えはGoogleで何度か表示されます。
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Ruby gem Serve を使用します。
システムにインストールするには、gem install serve
を実行します。
ディレクトリを提供するには、そのディレクトリに移動してserve
を実行するだけです。
デフォルトポートは4000です。ERB、HAML、Slim、SASSなどのサービスも提供できます。
sinatra
gemを使用できますが、ディレクトリの一覧は表示されませんが、ファイルを提供します。
require 'sinatra' # gem
set :public_folder, '.'
1.8で最初に 'rubygems'を先頭に追加する場合、ファイルとして実行します。
それを実行した後、URLは次のようになります
http:// localhost:4567/file_name
「./file_name」ファイルに解決されるはずです。
http:// localhost:4567 は、ディレクトリリストを「実行」しないため、動作しません。回避策については、 https://stackoverflow.com/a/12115019/3245 を参照してください。
。
過去にこれを使用してファイルシステムを提供しました。おそらくあなたはそれを修正するか、それがすべてを提供することを受け入れることができます。
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}'
見つけました こちら
クリス
python3 -m http.server
または、デフォルトのポート8000を使用したくない場合
python3 -m http.server 3333
または、ローカルホストからの接続のみを許可する場合
python3 -m http.server --bind 127.0.0.1
docs を参照してください。