从命令行提供当前目录

Seb*_*ian 93 ruby command-line

有人可以给我一个提示,如何从命令行用ruby提供当前目录?如果我可以有一些系统范围的配置(例如mime-types)并且只是从每个目录启动它,那就太好了.

Dan*_*rez 199

最简单的方法(感谢Aaron Patterson/n0kada):

ruby -run -e httpd . -p 9090
Run Code Online (Sandbox Code Playgroud)

替代,更复杂的方式:

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
Run Code Online (Sandbox Code Playgroud)

即使是第一个命令也很难记住,所以我只是在我的.bashrc:

function serve {
  port="${1:-3000}"
  ruby -run -e httpd . -p $port
}
Run Code Online (Sandbox Code Playgroud)

它默认为端口3000上的当前目录提供服务,但您也可以指定端口:

~ $ cd tmp
~/tmp $ serve      # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000   # ~/www served on port 5000
Run Code Online (Sandbox Code Playgroud)

  • 要消除`ruby -run -e httpd.-p 9090`查看http://ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html.它正在从`un` ruby​​标准库执行httpd方法,因此需要un. (7认同)

Mic*_*ohl 21

我从未见过如此紧凑的东西

python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

对于Ruby,Chris的回答在Google上出现了好几次.

  • 在python 3:`python -m http.server` ...更容易记住:) (6认同)

KAR*_*ván 21

由于阿龙帕特森 啾啾它今天你可以这样做:

ruby -run -e httpd . -p 5000
Run Code Online (Sandbox Code Playgroud)

您也可以通过添加来设置绑定地址 -b 127.0.0.1

适用于Ruby 1.9.2及更高版本.


小智 5

require 'webrick'
include WEBrick

s = HTTPServer.new(:Port => 9090,  :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Run Code Online (Sandbox Code Playgroud)


jel*_*ann 5

用红宝石宝石即成

要在您的系统上安装,请运行gem install serve.

要提供目录服务,只需 cd 到该目录并运行serve.

默认端口为 4000。它还可以提供 ERB、HAM​​L、Slim 和 SASS 等服务。