2

找到解决方案!

这似乎是特定于 Mongrel + Rails 2.3.8 的错误,Rails + cPanel 使用的网络服务器。这就是为什么它只在您从 cPanel 运行应用程序时出现,而不是在通过脚本/服务器在本地提供它时出现。

有关更多详细信息,请参阅: https ://rails.lighthouseapp.com/projects/8994/tickets/4690-mongrel-doesnt-work-with-rails-238

最终找到的解决方法是将以下文件放入每个新 Rails 2.3.8 应用程序的 /config/initializers 目录中:

https://gist.github.com/471663

添加此初始化程序后,我的 Rails 应用程序将按预期运行。

原始问题:

我已经阅读了 railsforzombies.org 上非常有用的教程,现在准备开始测试 RoR 安装。我的网站位于使用 cPanel 的共享主机上。我已经使用 cPanel 创建了测试应用程序,它设置在 ~/rails_apps/blog。我创建了一个重写,将 mydomain.com/testblog/ 重定向到 mydomain.com:12002,这是 cPanel 运行我的 RoR 应用程序的端口。我还在开发模式下通过 cPanel 启动了应用程序。

如果我访问 mydomain.com/testblog/,我会看到有用的页面,让我知道我的 RoR 应用程序已创建并且正在运行。太好了,对吧?嗯,没那么快。

我正在按照guides.rubyonrails.org/v2.3.8/getting_started.html 上的入门指南进行操作,然后进入第4 步。我script/generate controller home index在app/views/home/index 中运行并编辑了结果视图。 html.erb。这只是一个简单的

<h1>Hello rails!</h1>

但是,当我访问 mydomain.com/testblog/home/index(带有或不带有尾随的“/”)时,我在浏览器中看到一个空白页面,什么都没有(查看源代码什么都没有显示)。

为了确保我不会发疯,我将一个文本文件放在我的 rails 应用程序的 /public 目录中,当我转到 mydomain.com/testblog/test.txt 时,它会得到正确的服务。所以我知道来自 cPanel 的 Apache 重写工作正常。

有任何想法吗?我想我忽略了一些明显的东西,但我现在画的是空白。

作为参考,我在 cPanel 11、Ruby 1.8.7 和 Rails 2.3.8 上运行。我很想运行 Rails 3.0,但共享主机说现在不行。

编辑添加:

生成上面的主控制器和索引操作将以下行添加到我的 routes.rb 文件中(我已经检查过,它们在那里):

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

所以 mydomain.com/testblog/home/index 应该映射到 app/views/home/index.html.erb。

再次编辑更多调查细节:

我发现了一些可能对此有所启发的东西。如果我在 cPanel 中停止 rails 应用程序,然后通过 PuTTY 登录并启动开发服务器script/server并执行

curl http://0.0.0.0:3000/home/index

开发服务器确实响应

<h1>Hello Rails!</h1>

app/views/home/index.html.erb. 所以它在那里工作。当我在 cPanel 中启动 Rails 应用程序(告诉我它在端口 12002 上运行)时,我从 mydomain.com/testblog/home/index 得到一个空响应。我也得到了一个空洞的回应

curl http://0.0.0.0:12002

如果我通过服务器上的 SSH 运行它。所以它看起来像 cPanel 的问题,而不是 Rails。

4

1 回答 1

0

您是否确定并删除了应用程序的 app/public 目录中的 index.html 文件?

此外,在生成主控制器后,您是否设置了您的 routes.rb 以识别新的控制器和操作?

于 2011-02-08T20:52:10.480 回答