' Bundler.require'需要所有宝石?

时间:2018-04-13 19:31:03

标签: ruby bundler

试图找出Ruby的Bundler库。我的理解是我们只需要某些组,但我的设置似乎也加载了在其他组中指定的gems。

的Gemfile

source 'https://rubygems.org'

# Specify your gem's dependencies in apple.gemspec
gemspec

group :production do
  gem 'mail'
  gem 'bundler'
  gem 'pry'
  gem 'commander'
  gem 'fastlane'
  gem 'spaceship'
  gem 'highline'
  gem 'terminal-table'
  gem 'clipboard'
  gem 'date'
  gem 'mysql2'
  gem 'fileutils'
  gem 'redis'
  gem 'json'
  gem 'logger'
  gem 'jira-ruby', :require => 'jira-ruby'
end

group :jenkins do
  gem 'terminal-table'
  gem 'pry'
  gem 'mail'
  gem 'jira-ruby'
  gem 'spaceship'
end

test.rb

require 'pry'
binding.pry
require 'rubygems'
require 'bundler/setup'
Bundler.require(:jenkins) # I want this step to require only gems listed under 'jenkins' group in `Gemfile`. 

...

当我运行代码时,似乎Bundler.require(:jenkins)步似乎需要在Gemfile中指定所有宝石,

enter image description here

我仍然在理解Bundler的过程中,如果我问的问题太明显,请原谅我。有谁知道如何只从捆绑组加载宝石?在此先感谢!!

1 个答案:

答案 0 :(得分:0)

这有点令人困惑,但是据我自己使用它的判断,即使列出了所有宝石,它也只需要给定组中的宝石。

很容易亲眼看到这一点,只需尝试使用生产小组中的一个即可

Bundler.require(:jenkins)
Date.new # Should error

真的,您似乎已经注意到了这一点,但是您没有意识到..如果包括所有这些内容,则无需在test.rb中撬开:)