web-dev-qa-db-ja.com

コマンドラインから現在のディレクトリを提供する

誰かが私にヒントを教えてもらえますか、コマンドラインからルビーで現在のディレクトリを提供する方法は?システム全体の構成(たとえば、mime-types)を使用して、すべてのディレクトリから単純に起動できる場合、それは素晴らしいことです。

90
Sebastian

最も簡単な方法( 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
196

Aaron Pattersonツイートした 今日は次のことができます:

Ruby -run -e httpd . -p 5000

-b 127.0.0.1を追加することにより、バインドアドレスも設定できます

Ruby 1.9.2以降で動作します。

21
KARASZI István

こんなにコンパクトなものを見たことがない

python -m SimpleHTTPServer

rubyの場合、Chrisの答えはGoogleで何度か表示されます。

21
Michael Kohl
require 'webrick'
include WEBrick

s = HTTPServer.new(:Port => 9090,  :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
5
user286355

Ruby gem Serve を使用します。

システムにインストールするには、gem install serveを実行します。

ディレクトリを提供するには、そのディレクトリに移動してserveを実行するだけです。

デフォルトポートは4000です。ERB、HAM​​L、Slim、SASSなどのサービスも提供できます。

4
jellymann

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 を参照してください。

3
rogerdpack

1行のWebサーバー


過去にこれを使用してファイルシステムを提供しました。おそらくあなたはそれを修正するか、それがすべてを提供することを受け入れることができます。

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}'

見つけました こちら

クリス

3
Chris McCauley
python3 -m http.server

または、デフォルトのポート8000​​を使用したくない場合

python3 -m http.server 3333

または、ローカルホストからの接続のみを許可する場合

python3 -m http.server --bind 127.0.0.1

docs を参照してください。

1
Boris