当前位置: 首页 > 面试题库 >

在初始化程序中设置cache_store

徐鸿达
2023-03-14
问题内容

我正在尝试使用redis-store作为我的Rails 3
cache_store。我也有一个initializer /
app_config.rb,它加载一个yaml文件进行配置设置。在我的初始值设定项/redis.rb中,我有:

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

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

Rails.cache

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

ActiveSupport.Cache.FileStore

作为缓存存储而不是redis存储。但是,如果我像这样在我的application.rb文件中添加配置:

config.cache_store = :redis_store

它工作正常,只是在app.rb之后加载了app config初始化程序,所以我无权访问APP_CONFIG。

有人经历过吗?我似乎无法在初始化程序中设置缓存存储。


问题答案:

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

我的解决方案是在对应用进行如下配置之前移动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


 类似资料:
  • 10.6.1.程序初始化 现在用户启动程序就会首先看到Timeline界面。但是用户必须先设置个人选项并启动Service,否则就没有消息显示。这很容易让人摸不着头脑。 一个解决方案是,在启动时检查用户的个人选项是否存在。若不存在,就跳到选项界面,并给用户一个提示,告诉她下一步该怎么做。 ... @Override protected void onCreate(Bundle savedInsta

  • 当安装完成并首次启动 Navicat Monitor 时,浏览器会弹出并打开你的 Navicat Monitor 的网址“http://<your_ip_address>:<port_number>”。你需要在欢迎页面完成 Navicat Monitor 的基本配置。 【注意】<your_host_address> 是安装了 Navicat Monitor 的系统的主机名,以及 <port_num

  • 问题内容: 因此,我刚刚升级到Xcode 6.3 Beta 3,出现了许多与以下内容有关的错误: 初始化程序不会覆盖其父类中的指定初始化程序。 例如,这是一个类: 这是我的课程之一: 问题答案: 我的解决方案是一种快速解决方案,但我认为它比Apple在发行说明中的​​用途要容易。有关更多信息,请在此处搜索19775924 http://adcdownload.apple.com//Develope

  • 设备初始化 图源:Yubico 设备初始化非常简单,但在安全隐私管理方面需要一些系统性方法。在将来,这可以通过定义 MDM 分发的组策略来加强下面所提到的措施。 设置一个 8 个数字字符的 PIN 码使 macOS 如期登录。如果 PIN 码中包含字母等其他字符,macOS 将无法工作。你可以使用一个安全的密码管理器生成和存储 PIN 码。 设置 钥匙管理(Management Key) 选项为

  • 可让PS Vita系统软件的设定回复初始设定,使主画面及开始画面皆回到至购买时的状态。 轻触[格式化]>[初始化设定]。请遵循画面指示正确操作。 重要 初始化设定后无法复原,请注意。 初始化中请勿关闭PS Vita的电源。初始化若遭到中断,可能会导致故障。 即使进行此操作,也无法让系统软件回到先前版本。

  • 问题内容: 我正在使用Flask / Gunicorn运行Web应用程序,并且对生命周期管理有疑问。我在Java世界中拥有关于servlet的更多经验。 我正在为服务创建一个宁静的接口。该服务始终在服务器上运行,并与一组子服务器进行通信和控制。在Java中,将通过侦听器和servlet初始化方法来创建和初始化我的服务(例如,传统上在中找到的设置)。 Flask中的等效设置和配置在哪里?我正在考虑诸