如何编写小型ruby Web服务器?

时间:2011-12-13 03:23:41

标签: ruby webserver

我有一个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\""

4 个答案:

答案 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了吗?

这可能就是你要找的东西。