如何在本地WebServer上执行简单的Ruby

时间:2011-05-12 08:27:01

标签: ruby erb webrick

我正在使用WEBrick在端口2000上启动本地服务器并尝试使用ERB执行Ruby。 (我的OS X盒子上安装了Ruby 1.9.2)。它似乎不起作用。

例如,我创建了一个erb文件(tryErb.erb),如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>try erb</title>
</head>
<body>
    <p> % 99.downto(96) do |number|
    <%= number %> bottles of beer…
    % end
    </p>
</body>
</html>

我使用chmod a=rwx tryErb.erb使文件可执行,但如果我尝试访问正确的URL(http:// localhost:2000 / tryErb.erb),似乎没有任何效果。浏览器不会去任何地方;它只是停留在根的索引上。 bash shell中的日志显示:

  

localhost - - [12 / May / 2011:10:12:05   CEST]“GET /tryErb.erb HTTP / 1.1”200   199 http://localhost:2000/ - &gt;   /tryErb.erb

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

好的,但这不是完全的。您需要指定mime类型:MimeTypes =&gt; {'rhtml'=&gt; 'text / html'},我从http://www.ruby-forum.com/topic/96436复制了这个,识别rhtml并运行你在&lt;%...%&gt;中的红宝石代码。

require 'webrick'

include WEBrick

def start_webrick(config = {})
    # always listen on port 3000
    config.update(:Port => 3000)
    config.update(:MimeTypes => {'rhtml' => 'text/html'})
    server = HTTPServer.new(config)
    yield server if block_given?
    ['INT', 'TERM'].each {|signal| 
        trap(signal) {server.shutdown}
    }
    server.start
end

start_webrick(:DocumentRoot => Dir::pwd)