加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用捆绑器,什么是最好的方式来判断宝石是否“需要”?

发布时间:2020-12-16 22:29:54 所属栏目:百科 来源:网络整理
导读:说我的宝石我有 group :test do gem 'rspec-core',require: falseend 有没有一个简单的方法来看看测试组是否已经捆绑? (例如,在这种情况下,捆绑包可能已被调用或不使用 – 没有测试). 我找不到一个,所以我开始寻找rspec-core是否需要,并找到了一些明显的解
说我的宝石我有
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是测试它将需要测试组中的所有宝石.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读