【问题标题】:Rails 3 app running on Nginx and Unicorn in production not updating在 Nginx 和 Unicorn 上运行的 Rails 3 应用程序在生产中没有更新
【发布时间】:2013-09-30 13:28:36
【问题描述】:

我的个人 Rails 应用出现了一个奇怪的问题。

一年多以来,我一直在使用 Nginx、Unicorn 和 RVM 在 VPS 上运行它,我在生产设置方面并不是最好的,但我想开始做得更好,所以我关注了 Ryan Bates 的 Railscast主题here 它似乎工作了很长时间,但最近我注意到为了在添加新文章时刷新主页,我必须杀死独角兽进程,然后重新启动独角兽。

还有其他人遇到过这个问题吗?如果是这样,我将如何去纠正它?

【问题讨论】:

    标签: ruby-on-rails ruby nginx unicorn production


    【解决方案1】:

    新答案:

    根据您的 cmets,这很可能不是 Unicorn / Nginx 问题,而只是 Rails 在开发和生产之间切换的问题。尝试在本地运行您的网站,但在生产模式下。

    您很可能在每次有人发布新文章时都需要清除缓存。如果您获得大量流量,您会想要缓存,但忘记重置缓存可能会导致您看到的问题。

    旧答案:

    你使用 capistrano 吗?有一套使用独角兽和 capistrano 的食谱。他们有一个重新加载独角兽的任务:

    https://github.com/sosedoff/capistrano-unicorn/blob/master/lib/capistrano-unicorn/capistrano_integration.rb#L103

    这在文档中提到:

    http://unicorn.bogomips.org/SIGNALS.html

    HUP - 重新加载配置文件并优雅地重新启动所有工作人员。如果“preload_app”指令为 false(默认值),那么工作人员也会在重新启动时获取任何应用程序代码更改。如果“preload_app”为真,则应用程序代码更改将无效;在这种情况下,必须使用 USR2 + QUIT(见下文)来加载更新的代码。重新加载应用程序时,将调用 Gem.refresh,以便您的应用程序的更新代码可以获取新安装的 RubyGems。不建议您在 Unicorn 运行时卸载应用程序所依赖的库,因为重生的工作人员在加载卸载的依赖项失败时可能会进入生成循环。

    【讨论】:

    • 对不起,我第一次发帖可能不太清楚,该应用程序是杂志风格的网站,每次我或其他人发布文章时都会出现问题,由于某种原因,文章保存好了但主页(显示最新文章)没有更新。
    • 这听起来像是与您的应用程序相关而不是 Nginx / Unicorn。
    【解决方案2】:

    我应该早点回答这个问题,但被转移了,我的问题原来是我已经命名了试图检查当前日期的范围,但是当我在模型中执行 Time.now 时,当前日期总是与预期的不同,将当前日期/时间从控制器传递到范围内工作得很好。

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2012-12-19
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2020-07-19
      • 2015-01-18
      • 1970-01-01
      相关资源
      最近更新 更多