从命令行服务当前目录

有人可以给我一个提示,如何从命令行服务当前目录与ruby? 如果我可以有一些系统configuration(如MIMEtypes),并且从每个目录简单地启动,那将是非常棒的。

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

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 

我从来没有见过如此紧凑的东西

 python -m SimpleHTTPServer 

对于Ruby而言,Chris的回答在Google上多次出现。

正如Aaron Patterson 在今天推出的那样 ,你可以这样做:

 ruby -run -e httpd . -p 5000 

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

适用于Ruby 1.9.2及更高版本。

 require 'webrick' include WEBrick s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd) trap("INT"){ s.shutdown } s.start 

Web服务器在1行

这可能是也可能不是你想要的,但是非常酷,我只是不得不分享它。

我以前用这个来为文件系统服务。 也许你可以修改它,或者只是接受它提供的一切。

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

我在这里find了

克里斯

你可以使用sinatragem,虽然它不会为你做任何目录列表,但它服务于文件:

 require 'sinatra' # gem set :public_folder, '.' 

然后作为一个文件运行,如果在1.8添加需要'rubygems'的第一个。

运行后,然后url就像

HTTP://本地主机:4567 / FILE_NAME

应该parsing为“./file_name”文件。

http:// localhost:4567将不起作用,因为它不会“做”目录列表。 请参阅https://stackoverflow.com/a/12115019/32453了解解决方法&#x3002;

使用rubygem即成 。

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

要提供一个目录,只需简单地cd到目录并运行serve

默认端口是4000.它也可以用于ERB,HAML,Slim和SASS等。

 python3 -m http.server 

或者如果您不想使用默认端口8000

 python3 -m http.server 3333 

或者是否只允许从本地主机连接

 python3 -m http.server --bind 127.0.0.1 

看文档 。