在Nginx和Unicorn上运行的Rails 3应用程序在生产中没有更新

时间:2013-09-30 13:28:37

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

我的个人导航应用程序有点奇怪的问题。

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

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

2 个答案:

答案 0 :(得分:0)

新答案:

根据您的评论,这很可能不是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”为true,则应用程序代码更改将不起作用;在这种情况下,必须使用USR2 + QUIT(见下文)来加载更新的代码。重新加载应用程序时,将调用Gem.refresh,因此应用程序的更新代码可以获取新安装的RubyGems。当Unicorn运行时,不建议您卸载应用程序所依赖的库,因为重新生成的worker可能会在加载未安装的依赖项时无法进入spawn循环。

答案 1 :(得分:0)

我应该早点回答这个问题,但是得到了侧面跟踪,我的问题结果是我曾经命名范围试图检查当前日期,但是当我在模型中做Time.now当前日期总是不同于从控制器进入范围的当前日期/时间的预期。