如何在 RAILS_ENV 生产环境中将 RSPEC 配置为永不 运行

How to configure RSPEC to never run on RAILS_ENV production

由于我所做的更改,我正在尝试 运行 一些测试...所以我 运行 RAILS_ENV=production bundle exec rspec

这是一件非常愚蠢的事情,因为 rspec(测试)被配置为 t运行cate 所有表,而这正是发生在生产!你可以想象后果

有没有一种方法可以将 rspec 配置为在 RAILS_ENV=production 时从不 运行 这样任何人都不会发生这种情况。

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

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

在您的 Gemfile 中,请参考环境 developmenttest 组中任何特定于测试的内容(如 rspec-railsrspec,而不是在顶层,例如:

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

然后在生产机器上不进行开发和测试 gem 的情况下进行捆绑。如果没有 rspec gem,测试将不会有 运行。部署时添加--without开关:

bundle install --without development test

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

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