Rails应用程序在开发中工作,但在生产中是空的

时间:2015-03-20 18:24:07

标签: ruby-on-rails nginx unicorn

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

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

提示我需要什么?

unicorn_rails -c config/unicorn.rb -D

Rails development

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

Rails production

Nginx,Unicorn和Rails的日志不会显示任何错误。

  

耙路线
  [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

在开发中,我可以正常访问任何路由,甚至在路径不存在时显示错误消息。但在生产中,总是空白。 Works well in development - always blank in production

2 个答案:

答案 0 :(得分:1)

我不是那么大胆地​​转到这里的答案区域,但现在是时候了。我知道node.js可以用来在Rails上创建单页面应用程序。这是我想尝试的东西,但尚未完成。

在深入了解孤立和征服场景之前,您是否已查看过生产日志。它可能会堆积错误。他们告诉你什么吗?

我接近这个并不完全知道问题的面貌。而且,我不知道你已经尝试过什么。但是,我会尝试通过删除组件和复杂性来隔离问题。我建议创建一个非常简单的" Hello world"根页面。就是这样。如果我们可以解决这个问题并获得部署内容,那么您可以继续前进。

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

Hello world!简单测试 - 我还没有看到一个不需要root_url的Rails应用程序。 (也许node.js设置不需要一个?Dunno。)在你的routes.db中添加

  root 'static_pages#home'

耙入并确保路径显示出来。在/ static页面中创建一个home.html.erb,其中包含html for" Hello World。"使用您一直使用的相同命令将dev + prod部署+测试:

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

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

取消插件Node.js

在简单的" Hello Page"世界应用程序,你不需要node.js.如果您100%有信心无法引入问题,那么请忽略此建议。

Hello world,没有数据库且没有node.js仍然没有工作?查看生产参数,Gemfile等 如果需要,我会在这里添加详细信息。虽然我希望问题不在环境/ production.rb中......但它可能是。


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

答案 1 :(得分:1)

经过大量调查后,问题在于没有生产密钥。因此,我必须生成rake secret并将其粘贴到config/secrets.yml