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?这不会导致生产服务器被销毁。