如何在 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
中,请参考环境 development
和 test
组中任何特定于测试的内容(如 rspec-rails
或 rspec
)仅,而不是在顶层,例如:
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"
由于我所做的更改,我正在尝试 运行 一些测试...所以我 运行 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
中,请参考环境 development
和 test
组中任何特定于测试的内容(如 rspec-rails
或 rspec
)仅,而不是在顶层,例如:
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"