从命令行服务当前目录
有人可以给我一个提示,如何从命令行服务当前目录与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了
克里斯
你可以使用sinatra
gem,虽然它不会为你做任何目录列表,但它服务于文件:
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了解解决方法。;
使用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
看文档 。