2016-09-20 72 views
1

我们最近将一个较旧的Rails 2.3网站从CentOS 6服务器迁移到CentOS 7服务器。自转换之后,几页文件就不会被缓存。Rails 2.3页面不应该放在Passenger上时被缓存5

下面是在Web服务器上的细节变化:

  • 旧系统客运4.x中,在新的客运5.0.30。
  • 旧系统的Ap​​ache,新的是Nginx的1.10.1
  • 该应用程序还没有改变,不是添加config.ru客运等5
  • 我们正在红宝石REE
  • 运行的Rails 2.3.17
  • 我们正在运行Memcached进行一些片段缓存,但不是使用这些页面。

的事情,我们曾尝试:

  • 如果我们修改视图,所做的更改不会显示,直到重新启动。视图模板被缓存。
  • 我们禁用乘客5的涡轮增压。它没有帮助。
  • 我们从Memcached中删除了所有的密钥。它没有帮助。
  • 在磁盘上查找和删除Rails缓存 - 我们没有找到任何(也不应该)。

更多细节:

  • 我们举办其他几个的Rails 2.3的Rails的3.X/4.x的网站网站和数十人没有这个问题。
  • 如果重新启动Nginx或touch tmp/restart.txt,会显示更改。
  • Nginx的日志文件显示200
  • 生产Rails日志文件显示数据库和视图创建的时间。

看起来它是在生成输出,但是它从Rails,Passenger和Nginx之间的某种缓存中提取。

这可能是什么原因造成的?

+0

您是否直接在生产环境中修改视图,而不是经历“完整”部署过程(其中一步是反弹应用服务器)?这适用于您的其他应用程序? –

+0

什么样的变化被阻止?我在Rails 2.x模型关系中遇到过类似的问题,其中has_many或类似的关系缓存在启动web服务器时的状态(就好像db本身被缓存,尽管不是)。 –

+0

@SergioTulentsev我们修改了视图,没有完整的部署或弹出服务器。我怀疑这些缓存视图模板缓存。 –

回答

0

原来这是一个范围叫做DateTime.now,没有包含在proc中 - Proc.new { DateTime.now }.call。这导致日期与模型一起被缓存。

为什么它没有在旧的设置下缓存,我不确定。也许它只是更频繁地重新开始,所以我们从来没有看到它。