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 

在检查你的代码之前。

https://github.com/Sutto/barista