在运行时更改Rails的cache_store?

Blu*_*ith 6 memcached ruby-on-rails dalli

我的应用程序有一个功能,允许管理员通过 GUI 更改 cache_store 配置。然后新的配置将立即生效。

我的 production.rb 中的默认cache_store:

config.cache_store = :memory_store
Run Code Online (Sandbox Code Playgroud)

管理员可以选择更改为将 memcached 与 Dalli 存储结合使用。我尝试更改 Rails.application.config.cache_store:

Rails.application.config.cache_store = :dalli_store, 'localhost:11211', 'localhost:11212'
Run Code Online (Sandbox Code Playgroud)

但 Rails.cache 没有改变:

Rails.cache
=> <#ActiveSupport::Cache::MemoryStore entries=0, size=0, options={}>
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

ilt*_*mpo 4

缓存存储是在应用程序初始化期间设置的,据我所知,无法在运行时更改。为了实现您想要做的事情,您可以将缓存存储配置保留在配置文件中并重新启动整个应用程序。请参阅类似问题的答案以了解如何做到这一点。

免责声明:使用这种方法,如果配置错误,您可以轻松终止应用程序。