如何在本地 Web 服务器上执行简单的 Ruby

发布于 2024-11-06 21:10:27 字数 822 浏览 5 评论 0原文

我正在使用 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/5/2011:10:12:05 CEST]“获取/tryErb.erb HTTP/1.1”200 199 http://localhost:2000/ -> /tryErb.erb

有什么想法吗?

I'm using WEBrick to start a local server on port 2000 and trying to execute Ruby with ERB. (I have Ruby 1.9.2 installed on my OS X box). It doesn't seems to work.

For example, I created an erb file (tryErb.erb) like this:

<!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>

I used chmod a=rwx tryErb.erb to make the file executable, but if I try to visit the proper URL (http://localhost:2000/tryErb.erb), nothing seems to work. The browser doesn't go anywhere; it simply stays on the root's index.
The log in the bash shell shows:

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别靠近我心 2024-11-13 21:10:27

好吧,明白了这一点,但还没有完全明白。您需要指定 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)

Ok figured this one out, not completely though. You need to specify mime type :MimeTypes => {'rhtml' => 'text/html'}, i copied this from http://www.ruby-forum.com/topic/96436, recognizes rhtml and runs what ever ruby code you have in <%...%>.

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文