在Rails中放置缓存初始化器的位置?

时间:2011-02-20 19:52:46

标签: ruby-on-rails ruby-on-rails-3 caching activerecord

我正在尝试优化我的应用程序并在应用程序启动时将某些内容加载到Rails缓存中(最终是memcached)。基本上我在我的数据库中有几个表只存在用于规范化目的和RARELY更改。当他们改变时,我可以处理更新缓存的逻辑。

我应该在哪里写'初始化程序'来读取这些不同的模型并将它们加载到缓存中?我尝试编写传统的初始化程序,但它在我的模型实际存在之前运行...我基本上需要加载我的所有模型和东西,然后创建缓存,然后运行应用程序。我怎样才能进入那个中间状态?

1 个答案:

答案 0 :(得分:1)

我会将此代码放在lib目录中的文件中,并首先需要模型文件,或者直接将模型文件放入模型文件中,以便在定义模型后运行初始化:

class NormalizedTable
  ...
end

CacheInitializer.fill_cache_with :normalized_table

在初始化程序或lib目录中定义了CacheInitializer#fill_cache_with。我还建议您在后台运行这些功能,例如在延迟的作业中。如果您每次加载Rails应用程序时都运行此代码,则会降低启动过程的速度,并且数据可能始终不在您的缓存中 - 即,您的应用程序可以在填充缓存时使用数据库