Ruby on rails 如何将RSPEC配置为从不在RAILS\u ENV产品上运行

Ruby on rails 如何将RSPEC配置为从不在RAILS\u ENV产品上运行,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我试图运行一些测试,因为我做了一些更改…所以我运行了RAILS\u ENV=production bundle exec rspec 这是一件非常愚蠢的事情,因为rspec(测试)被配置为截断所有表,而这正是生产中发生的事情!!你可以想象后果 有没有一种方法可以将rspec配置为在RAILS\u ENV=production时从不运行,这样任何人都不会发生这种情况 还有什么其他建议或良好做法可以用来避免此类错误 更新:我为rspec rails团队创建了一个问题,他们刚刚提交了一个修改,修复了这

我试图运行一些测试,因为我做了一些更改…所以我运行了
RAILS\u ENV=production bundle exec rspec

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

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

还有什么其他建议或良好做法可以用来避免此类错误


更新:我为rspec rails团队创建了一个问题,他们刚刚提交了一个修改,修复了这个问题

在您的
GEM文件中
,仅在环境
开发
测试
组中引用任何特定于测试的内容(如
rspec rails
rspec
),而不是在顶层,例如:

group :development, :test do
  gem 'rspec-rails', '~> 3.0'
end
然后在您的生产机器上进行捆绑,而无需开发和测试gems。如果没有
rspec
gem,测试就不会运行。在部署时添加
--without
开关:

bundle install --without development test

spec\u helper.rb
中,在任何
RAILS\u ENV
赋值之前:

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

如果命令在生产机器上运行,那么这会起作用,但是开发人员仍然可以在任何开发机器上使用RAILS_ENV=production?这不会导致生产服务器被销毁。