【问题标题】:Unable to clear Rails cache and see an updated template无法清除 Rails 缓存并查看更新的模板
【发布时间】:2016-03-31 05:27:20
【问题描述】:

以前的程序员突然退出了。他们没有留下关于他们花了一年时间开发的 Rails 应用程序的文档。我现在被赋予了做出一些改变的任务。但是,如果我 ssh 到服务器并在生产中编辑模板,我无法对生产站点中出现的模板进行更改。

系统:

  rake about

  Rails version             4.2.0
  Ruby version              2.2.3-p173 (x86_64-darwin15)
  RubyGems version          2.4.5.1
  Rack version              1.5
  JavaScript Runtime        Node.js (V8)
  Environment               development
  Database adapter          mysql2

我认为问题出在缓存上,但我试过了:

  rake tmp:cache:clear

和:

  Rails.cache.clear

没有明显的效果。

我对重新启动应用程序感到紧张,因为我没有关于如何启动它的说明。我不确定是否有最新的 Cap 脚本。

在我的机器上,如果我编辑:

 apps/views/layouts/application.html.erb

然后我会立即看到更改,但是如果我 ssh 到生产环境并进行相同的更改,我看不到更改。有一些页面我可以编辑他们的 HTML 模板,我会立即看到更改,但不是 application.html.erb。

假设这个问题是缓存,我应该如何清除缓存?

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    在这种情况下,很可能不是缓存问题。

    在生产模式下,所有类等都在应用启动期间预加载。因此,当您对 Rails 应用程序中的任何内容进行更改时,您必须重新启动服务器。

    当你 SSH 到你的服务器并输入时

    $ ps auxf
    

    您应该能够看到之前启动应用程序时使用的标志。

    【讨论】:

    • 奇怪的是,有一些小模板(如果我在生产中编辑文件)我可以进行更改并立即看到更改。但在大多数模板上,当然还有 application.html.erb,我看不到我的更改。
    • 感谢您的提示。我重新启动了应用程序。仍然没有变化,这让我觉得我们根本没有使用 application.html.erb。
    • 如果action有layout false之类的东西,你可以签入控制器,那么它没有使用标准布局文件
    • 如果你添加你的控制器代码,它会更容易检查;)
    • 不,我的理论是愚蠢的。如果我在本地更改模板,并运行“rails -s”并检查我的浏览器,我会看到更改,就像我预期的那样。但是当我将它推送到服务器并重新启动应用程序时,我仍然看不到变化。这太让人抓狂了。
    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多