如何在RAILS_HOME / config / environments / *文件中的RAILS_HOME / lib文件夹中使用类?

时间:2011-09-14 21:52:46

标签: ruby-on-rails ruby ruby-on-rails-3 environment

我有一个由我的RAILS_HOME / lib文件夹中的类(RedisConfig)管理的配置数据(Redis服务器的主机/帖子)。我们决定使用redis-store作为缓存。

这是我们在RAILS_HOME / config / environments / production.rb中的内容:

config.cache_store = RedisStore.new "#{RedisConfig.host}:#{RedisConfig.port}"

当然,我得到一个TypeError,因为在加载了production.rb之后加载了RedisConfig,所以它在这个上下文中永远不会存在。什么是在我们的environment.rb或environment /#{RAILS_ENV} .rb文件中加载和使用此配置管理器的最佳策略?

1 个答案:

答案 0 :(得分:1)

考虑采用this approach。这里的技巧是它们在初始化阶段加载 - 它与将其作为初始化器本身包含在一起。

有关加载RedisConfig模块的信息,请参阅this SO post。虽然这是关于引擎的,但它有一些interesting details on initialisation

<强>更新

这是一个更好的解决方案 - 更新您的application.rb如下

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += Dir["#{config.root}/lib/**/"]

这将自动加载存储在/ lib。

中的所有模块