Rails 应用程序在开发中有效但在生产中为空

Rails application works in development but is empty in production

我的 Rails 4 应用程序在开发模式下运行,但在生产模式下我只看到一个空白页面。

在 CentOS 7 VPS 中使用 Nginx 的 运行 Unicorn。

有什么提示吗?

unicorn_rails -c config/unicorn.rb -D

unicorn_rails -c config/unicorn.rb -D -E production

Nginx、Unicorn 和 Rails 的日志没有显示任何错误。

Rake routes
[root@mycentos my_app]# rake routes

   Prefix Verb   URI Pattern               Controller#Action
    blogs GET    /blogs(.:format)          blogs#index
          POST   /blogs(.:format)          blogs#create
 new_blog GET    /blogs/new(.:format)      blogs#new
edit_blog GET    /blogs/:id/edit(.:format) blogs#edit
     blog GET    /blogs/:id(.:format)      blogs#show
          PATCH  /blogs/:id(.:format)      blogs#update
          PUT    /blogs/:id(.:format)      blogs#update
          DELETE /blogs/:id(.:format)      blogs#destroy

在开发中,我可以正常访问任何路由,即使在路由不存在时它也会向我显示错误消息。但在生产中,始终是一片空白。

我不是很大胆地切换到这里的答案区域,但是是时候了。我知道 node.js 可用于在 Rails 上创建单页应用程序。这是我想尝试但还没有完成的事情。

在进入隔离和征服场景之前,您是否查看了您的生产日志。它可能会被错误堆积起来。他们告诉你什么了吗?

我在不完全了解问题的复杂性的情况下处理这个问题。而且,我不知道你已经尝试过什么。但是,我会尝试通过删除组件和复杂性来隔离问题。我建议在根目录下创建一个非常简单的 "Hello world" 页面。而已。如果我们可以解决这个问题并部署一些东西,那么您就可以取得进展。

获得 "Hello world!" 页面将证明您的 MVC 代码库设置和部署正在运行。然后您将数据库作为生产中的变量隔离出来。

世界,您好!简单测试 - 我还没有看到不需要root_url 的Rails 应用程序。 (也许 node.js 安装程序不需要一个?不知道。)在你的 routes.db 添加

  root 'static_pages#home'

搜索并确保显示路径。在 /static 页面中创建一个 home.html.erb,其中 html for "Hello World." Deploy + test to dev + prod using the same command you've been using:

unicorn_rails -c config/unicorn.rb -D -E production

如果工作正常,那么您知道您的部署工作正常,如果在生产环境中不工作,则删除另一个组件...

拔掉插头Node.js

在您简单的 "Hello Page" 世界应用程序中,您不需要 node.js。如果您 100% 确信不会引入问题,请忽略此建议。

您好,没有数据库和 node.js 仍然无法工作?查看生产参数,Gemfile等 如果需要,我会在此处添加详细信息。虽然我希望问题不在 environments/production.rb 中......但它可能是。


看起来像是 Rails exp 的人。在 node.js 上回答这个问题会更好,但由于没有其他人加紧努力,我希望我的意见能有所帮助,如果只是以另一种方式看待问题的话。

查了很多,问题是没有生产秘钥。所以我必须生成它 运行 rake secret 并将其粘贴到 config/secrets.yml.