如何配置RSPEC永远不会在RAILS_ENV生产上运行

时间:2015-05-22 19:17:27

标签: ruby-on-rails ruby rspec

由于我所做的更改,我试图进行一些测试......所以我跑了RAILS_ENV=production bundle exec rspec

这是非常愚蠢的事情,因为 rspec (测试)被配置为截断所有表格,这正是在PRODUCTION上发生的事情!!你可以想象后果

当RAILS_ENV =生产时,是否有办法将rspec配置为永不运行,因此任何人都不会发生这种情况。

可以采用哪些其他建议或良好做法来避免此类错误

更新:我为rspec-rails团队创建了一个ISSUE,他们只是提交了一个修复此问题的更改https://github.com/rspec/rspec-rails/pull/1383/files

2 个答案:

答案 0 :(得分:5)

Gemfile中,请参阅环境rspec-railsrspec 组中与测试相关的任何内容(例如developmenttest)只有,而不是在顶层,例如:

group :development, :test do
  gem 'rspec-rails', '~> 3.0'
end

然后在生产机器上没有开发和测试宝石进行捆绑。没有rspec gem,测试就不会运行。部署时添加--without开关:

bundle install --without development test

答案 1 :(得分:3)

spec_helper.rb之前,在任何RAILS_ENV作业之前:

raise "Not in test" unless ENV['RAILS_ENV'] == "test"