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

时间:2011-01-27 19:38:57

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

我希望我的一个初始化程序(config/initializers/)中的代码仅针对:development环境运行,而不是:test:production。最好的方法是什么?

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

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

3 个答案:

答案 0 :(得分:46)

我非常确定您只有两个选项是将配置代码放在config/environments/development.rb中,或者将初始化代码包装在if块中。不过,您可以通过if Rails.env.development?收紧第二个选项。

答案 1 :(得分:3)

我不知道这是不是一个好主意,但这是一个不同的想法。

您可以创建config/initializers/development目录(或config/environments/development/initializers),将barista_config.rb放在该目录中,然后在config/environments/development.rb中包含该目录中的任何内容。

我不知道这是不是一个好主意,但它至少是第三种选择......以防万一你还在考虑这个问题三和一个提问半年后。

答案 2 :(得分:1)

Barista有一个配置设置:

Barista.configure do |c|
  c.env = :development
end

这只会在开发模式下将coffescript重新编译为js,并且应该加速你的测试。

确保你跑:

rake barista:brew

在检查您的代码之前。

https://github.com/Sutto/barista