说我的宝石我有
- group :test do
- gem 'rspec-core',require: false
- end
有没有一个简单的方法来看看测试组是否已经捆绑? (例如,在这种情况下,捆绑包可能已被调用或不使用 – 没有测试).
我找不到一个,所以我开始寻找rspec-core是否需要,并找到了一些明显的解决方案:
- Bundler.definition.index.search("rspec-core")
- # or
- Gem.loaded_specs["rspec-core"]
什么是最稳定的API来确定宝石是否需要?
(没有试图要求它并拯救LoadError)
解决方法
当生成Rails应用程序时,它通常包含一个使用Rails.env来确定要使用哪个组的行.它应该看起来像这样Bundler.require(:default,Rails.env).这通常发生在Rails应用程序的初始化中.以下是一些代码片段:
- class Rails::Boot
- def run
- load_initializer
- Rails::Initializer.class_eval do
- def load_gems
- @bundler_loaded ||= Bundler.require :default,Rails.env
- end
- end
- Rails::Initializer.run(:set_load_path)
- end
- end
所以如果你的Rails.env是测试它将需要测试组中的所有宝石.