有人可以给我一个提示,如何使用ruby从命令行提供当前目录吗?如果我可以进行一些系统范围的配置(例如mime-types),然后从每个目录中启动它,那将是很好的。
Answers:
最简单的方法(感谢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
ruby -run -e httpd . -p 9090
查看ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html。它从un
ruby标准库执行httpd方法,因此需要un。
ruby -run -e httpd . -p 9090 &
如果要将其放回前台,请使用fg
。
我从未见过像
python3 -m http.server
您可以选择在末尾添加端口号:
python3 -m http.server 9000
正如Aaron Patterson 在今天发布的推文一样,您可以执行以下操作:
ruby -run -e httpd . -p 5000
您还可以通过添加来设置绑定地址 -b 127.0.0.1
适用于Ruby 1.9.2及更高版本。
您可以使用sinatra
gem,尽管它不会为您提供任何目录列表,但可以提供文件:
require 'sinatra' # gem
set :public_folder, '.'
然后将其作为文件运行,如果在1.8中首先添加require'rubygems'。
运行后,URL就像
http:// localhost:4567 / file_name
应该解析为“ ./file_name”文件。
http:// localhost:4567不能工作,因为它不能“执行”目录列表。请参阅https://stackoverflow.com/a/12115019/32453,了解解决方法。