Rails:每个环境的初始化程序?

Jo *_*iss 43 ruby-on-rails ruby-on-rails-3

我希望我的一个初始化器(in config/initializers/)中的代码仅针对:development环境运行,但不是:test或者:production.最好的方法是什么?

把它粘贴到config/environments/test.rb看起来不干净,我不太喜欢在一个if Rails.env == 'development' do ... end语句中包装整个初始化文件.是否有一些规范的方法来做到这一点?

(背景:为了加快测试加载时间,我试图将Barista gem移动到:development我的组中Gemfile,但是config/initializers/barista_config.rb调用Barista.configure,所以现在它在测试(和生产)模式下会窒息.)

Dyl*_*kow 47

我非常确定您只有两个选项是将配置代码放入config/environments/development.rb或用您的if块包装初始化程序代码.不过,你可以通过这样做来收紧你的第二个选择if Rails.env.development?.

  • 另一个类似的模式是使用`if defined?(Foo)`,如果Foo gem仅在开发或测试模式下加载.例如,[Konacha](https://github.com/jfirebaugh/konacha)建议这样做. (8认同)