3

我正在使用 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 中的日志显示:

本地主机 - - [12/May/2011:10:12:05 CEST] "GET /tryErb.erb HTTP/1.1" 200 199 http://localhost:2000/ -> /tryErb.erb

有任何想法吗?

4

1 回答 1

4

好的,想通了这一点,但不完全。您需要指定 mime 类型:MimeTypes => {'rhtml' => 'text/html'},我从http://www.ruby-forum.com/topic/96436复制了这个,识别 rhtml 并运行任何 ruby <%...%> 中的代码。

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)
于 2011-05-12T16:17:29.247 回答