Rails:每个环境初始化器?
我想在我的初始化程序(在config/initializers/
)中的代码只能运行在:development
环境中,但不能运行:test
或:production
。 什么是最好的方式来做到这一点?
将它粘贴到config/environments/test.rb
似乎不太if Rails.env == 'development' do ... end
,我不太喜欢将整个初始化文件包装在一个if Rails.env == 'development' do ... end
语句中。 有没有一些规范的方法来做到这一点?
(背景:为了加快testing加载时间,我试图将Barista的gem移到我的Gemfile
:development
组中,但config/initializers/barista_config.rb
调用Barista.configure
,所以现在它在testing中扼杀(和生产)模式。)
我很确定你只有两个select是把configuration代码放在config/environments/development.rb
或者用你的if
区块来包装你的初始化代码。 if Rails.env.development?
可以通过执行来加强你的第二个选项if Rails.env.development?
但是。
我不知道这是不是一个好主意,但这是一个不同的主意。
您可以创build一个config/initializers/development
目录(或config/environments/development/initializers
),将barista_config.rb
放在该目录中,然后在config/environments/development.rb
包含任何内容。
我不知道这是不是一个好主意,但至less有第三个select,以防万一你问这个问题三年半之后你还在想这个问题。
咖啡师有一个configuration设置为:
Barista.configure do |c| c.env = :development end
这将只在dev模式下重新编译coffescript到js,并且应该加速你的testing。
确保你运行:
rake barista:brew
在检查你的代码之前。