【问题标题】:Rails application works in development but is empty in productionRails 应用程序在开发中工作,但在生产中为空
【发布时间】:2015-03-20 18:24:06
【问题描述】:

我的 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 路由

   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

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

【问题讨论】:

  • 如果您在生产服务器上运行 rake 路由,输出或错误是什么?
  • 而且,您是否在上传和部署之前运行了 $ rake assets:precompile RAILS_ENV = production
  • 不,我之前没有运行过它。应用是在同一个VPS中生成的,不是上传的。
  • 运行 rake assets 后,我还需要做什么?
  • 不确定。需要更多信息。在生产服务器输出上运行“rake routes”有什么作用?

标签: ruby-on-rails nginx unicorn


【解决方案1】:

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

【讨论】:

  • 天哪。我很高兴你发现了。你是怎么追踪到的?日志中是否出现提示?还有什么?
  • @Valerie,Rails 日志从未给我任何提示,甚至来自 Nginx 或 Unicorn 的日志也没有。找到解决方案纯属运气。非常感谢您的宝贵时间!
【解决方案2】:

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

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

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

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

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

  root 'static_pages#home'

检查并确保显示路径。在包含“Hello World”的 html 的 /static 页面中创建 home.html.erb。使用您一直使用的相同命令部署 + 测试到 dev + prod:

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

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

拔下 Node.js

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

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多