我有一个ruby脚本,它还需要在目录中提供一些静态文件(例如index.html,CSS和JS目录)。编写一个内联Web服务器来提供这些文件的最佳方法是什么?
require 'webrick'
web_server = WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd + '/web')
trap 'INT' { web_server.shutdown }
web_server.start
或者将其添加到.bash_profile
,以便在任何目录中提供文件的简便方法:
alias serve="ruby -rwebrick -e\"s = WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start\""
答案 0 :(得分:8)
您可以使用最简单的ruby HTTP服务器:
ruby -run -e httpd . -p 5000
它将从端口5000上的运行目录提供内容。
答案 1 :(得分:2)
如果您正在寻找纯Ruby和简单的东西,WEBrick是一个不错的选择。因为它是纯Ruby,所以它不会很快。
Mongrel部分用C和Ruby实现,性能优于WEBrick。 (如果安装了Mongrel,Ruby on Rails开发模式将优先使用Mongrel而不是WEBrick。)
如果您希望您的服务器比WEBrick或Mongrel更好地扩展,那么thin可能是选择 - 它将Mongrel粘合在EventMachine之上以进一步扩展到另一个更简单,系统可以扩展。
没有什么能完全取代运行nginx
这样功能齐全的网络服务器,但将其集成到您的应用程序中对您和您的用户来说更为重要。
答案 2 :(得分:1)
正如@sarnold提到瘦是一个好的服务器,机架将使用瘦优先级非常高。如果安装了机架宝石,波纹管是一条单线路:
rackup -b "use Rack::Static, :index => 'index.html'; run Rack::File.new('.')"
如果当前目录中没有'index.html',将列出目录内容。
答案 3 :(得分:0)
你看过Sinatra了吗?
这可能就是你要找的东西。