我的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的日志不会显示任何错误。
耙路线
[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
在开发中,我可以正常访问任何路由,甚至在路径不存在时显示错误消息。但在生产中,总是空白。
答案 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
。