当前位置:  开发笔记 > 后端 > 正文

在初始化程序中设置cache_store

如何解决《在初始化程序中设置cache_store》经验,为你挑选了1个好方法。

我正在尝试使用redis-store作为我的Rails 3 cache_store.我还有一个初始化器/ app_config.rb,它为配置设置加载一个yaml文件.在我的初始化程序/ redis.rb中,我有:

MyApp::Application.config.cache_store = :redis_store, APP_CONFIG['redis'] 

但是,这似乎不起作用.如果我做:

Rails.cache

在我的rails控制台中,我可以清楚地看到它正在使用

ActiveSupport.Cache.FileStore

作为缓存存储而不是redis-store.但是,如果我在application.rb文件中添加配置,如下所示:

config.cache_store = :redis_store 

它运行得很好,除了在app.rb之后加载app config初始化程序,所以我没有访问APP_CONFIG.

有没有人经历过这个?我似乎无法在初始化程序中设置缓存存储.



1> Jack Chu..:

经过一些 研究,可能的解释是initialize_cache初始化程序在rails/initializers之前运行.因此,如果之前未在执行链中定义,则不会设置缓存存储.您必须在链中更早地配置它,例如在application.rb或environments/production.rb中

我的解决方案是在app配置之前移动APP_CONFIG加载:

APP_CONFIG = YAML.load_file(File.expand_path('../config.yml', __FILE__))[Rails.env]

然后在同一个文件中:

config.cache_store = :redis_store, APP_CONFIG['redis']

另一个选择是将cache_store放在before_configuration块中,如下所示:

config.before_configuration do
  APP_CONFIG = YAML.load_file(File.expand_path('../config.yml', __FILE__))[Rails.env]
  config.cache_store = :redis_store, APP_CONFIG['redis']
end

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有