Rails引擎:在哪里定义仅用于测试的gems

时间:2013-07-09 08:23:46

标签: ruby-on-rails testing rails-engines gemfile gemspecs

我正在构建引擎,我想使用VCR和Webmock进行测试。

Gemfile generated when an engine is created中的文档似乎表明所有引擎的宝石都应该通过gemspec加载,但唯一的选择是add_dependency和add_development_dependency。如果我使用后者,VCR和Webmock会加载到我的开发环境中,然后我必须在开发环境中明确禁用Webmock。我宁愿不这样做,因为主机应用程序可能希望这些宝石在开发中工作,而我的引擎禁用它们可能是意外的。

显而易见的解决方案似乎是使用引擎的Gemfile:

group :test do
  gem 'vcr'
  gem 'webmock'
end

这是加载仅在测试引擎时使用的宝石的正确方法吗?

有没有陷阱呢?

3 个答案:

答案 0 :(得分:0)

其中一个众所周知的rails引擎rails_admin(https://github.com/sferik/rails_admin)使用了这种方法,因此我认为它可以被认为是一种很好的做法。

答案 1 :(得分:0)

Rails应用程序和Rails应用程序的Rails引擎的加载顺序是什么?

我的猜测是Rails应用程序Gemfile是加载或未加载gem的决定因素。这可能值得在Rails测试应用程序中尝试。

答案 2 :(得分:0)

我相信答案是在引擎的Gemfile中声明没有任何问题,gems只用于测试和调试引擎代码。此外,我认为Gemfile模板应该不那么模糊,并且提交了一个拉取请求:

https://github.com/rails/rails/pull/11881