Rails 5缓存,它存储在哪里,如何清除?

3

我在这件事上想破了头。除了重新启动nginx,我找不到一种清除ROR5应用程序生产缓存的方法。如果我改变了某些内容(例如),比如在app/views/layouts/application.html中,则更改在重新加载/重启服务器之前不会反映出来。

我编辑了config/environments/production.rb并进行了更改:

config.action_controller.perform_caching = false

尝试设置

config.cache_store = false

我猜,在ROR中有很多缓存元素,我迷失了方向。
我想知道以下几点:
  1. 生产模式下如何(在哪里)禁用缓存?
  2. 哪一部分负责视图缓存?
  3. 缓存存储在哪里(cache_store?tmp / *)?
  4. 有没有办法在运行时强制 ROR 刷新其缓存?
附注:我正在树莓派上运行应用程序,需要修复一些问题,并通过ftp直接将更改推送到盒子上。 我知道这不是最好的解决方法,但重新启动Nginx需要一些时间。 我知道我可以将盒子切换到开发模式,但现在我不想这样做。
谢谢!

你可以编写一个 Rake 任务并在后台执行它。有一个用于清除缓存的 Rake 命令,此外,你还可以创建一个新的 Rake 任务,在其中执行多个清理任务。 - Darpan Chhatravala
1个回答

7

实际上,每次部署都需要运行几个rake任务来确保一个干净的状态:

rails tmp:clear # clears all cache and sockets files.
rails db:schema:cache:clear # Clears a db/schema_cache.dump
rails assets:precompile # Compile all the assets
rails db:migrate 
# ... + a few things I already forgot.
rails restart

手动完成这个任务会非常麻烦。相反,使用Capistrano并设置自动化部署过程。使用Capistrano::Rails,这应该是非常简单的。


复杂的答案是缓存存储在几个不同的地方。请参阅Rails指南以获取完整的概述http://guides.rubyonrails.org/caching_with_rails.html - max
由于树莓派的资源相对较少,您可能希望在本地编译资产,然后只需上传资产,而不是尝试在树莓派上进行编译。但是,除非您需要在封闭网络上运行它,否则我建议选择免费的Heroku应用程序,而不是树莓派。 - max
谢谢,我知道那些(任务)。但这是要尝试一些修复措施,除非我重新启动服务器(这很麻烦),否则不会显示出来。基本上,我想要生产模式,没有缓存。我看了手册,但不清楚视图在哪里被缓存(我没有使用任何缓存命令)。因此Rails自己进行了一些操作(片段?)。我一点头绪都没有 :-/ - Roger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接