SlideShare a Scribd company logo
RubyGems/Bundler/rbenv
Hiroshi SHIBATA / GMO Pepabo, Inc.
2018.08.26 LL Event 2018
Gems on Ruby
self.introduce
Executive Officer CPO(Chief Productivity Officer)
Director of Business Process Re-engineering Office
Director of Technical Division
at GMO Pepabo, Inc. @pepabo
Hiroshi SHIBATA @hsbt
https://www.hsbt.org
self.introduce
=> {
name: “SHIBATA Hiroshi”,
nickname: “hsbt”,
organizations: [“ruby”, “rubygems”, “bundler”,
“asakusarb”, “railsgirls”, “pepabo”, …],
commit_bits: [“ruby”, “rake”, “rubygems”, “bundler”,
“rdoc”, “psych”, “ruby-build”, “railsgirls”, “railsgirls-
jp”, …],
sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”,
“railsgirls.com”, “railsgirls.jp”],
}
Gems on Ruby
Gems on Ruby
• History
• RubyGems
• Bundler
• rbenv/ruby-build
• RubyGems 3.0/4.0
• RubyGems & Bundler
Agenda
Answer
• Must buy “Web+DB
Press Vol.103”
• You should use
RubyGems/Bundler/
rbenv at all.
History
1.
• RAA(Ruby Application Archive)
• 2013/08: raa.ruby-lang.org 終了のご報告 https://
www.ruby-lang.org/ja/news/2013/08/08/rip-raa/
• RubyForge
• 2009/10: RubyForge To Be Phased Out, RubyGems.org
Takes Over Gem Hosting https://www.infoq.com/news/
2009/10/rubyforge-phased-out-rubygemsorg
• gems.github.com
• 2009/10: Gem Building is Defunct https://www.infoq.com/
news/2009/10/github-stops-gem-building
Packaging and Disribution(1)
• gemcutter.org:
• https://github.com/rubygems/gemcutter
• You can use `gem yank` command after you did invoke
`gem i gemcutter`.
• rubygems.org:
• gemcutter.org was renamed to rubygems.org.
• bundler:
• 2010: Released to 1.0.0 version.
Packaging and Disribution(2)
RubyGems
2.
• The package manager of Ruby libraries.
• `gem install rails -v “~> 5.2”`
• You can install specified version of Ruby libraries
that called `Gem`. RubyGems handles global
environment on your box.
• You could specify `gem ‘rails’, ‘~> 5.2’` syntax
without its dependency.
What’s rubygems?
What does mean “official”?
“official” means “Matz controllable”
Un-controllable examples:
• ruby-doc.org
• rubygems.org
• bundler.io
• Ruby version manager(rvm/rbenv/chruby)
“RubyTogether” maintains RubyGems, Bundler and
RubyGems.org(Rails Application).
• Merge latest stable version into Ruby Core
• Ruby 2.6.0 will bundle RubyGems 3.0(TBD)
• Ruby 2.7 or 3.0 will bundle RubyGems 4.0(TBD)
The policy of RubyGems versioning
• RubyGems have HackerOne project.
• 3 people handle vulnerability issues.
• But We have no workflow about security release.
• RubyGems 2.7.6 was accidentally released.
Security
Bundler
3.
• The vendoring tool of Ruby.
• RubyGems couldn’t care dependency of Ruby
libraries and isolate version managing with ruby
process.
• Bundler can do them with `Gemfile`
What’s bundler?
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gemspec
# We need a newish Rake since Active Job sets its test tasks' descriptions.
gem "rake", ">= 11.1"
• RubyGems 2.x, 3.x uses Molinillo-0.5.7
• Bundler 1.16.x also uses Molinillo-0.6.4
• These are different versions and behavior of
dependency resolver.
Dependency Resolver incompatible
~/D/g/r/rubygems (master) > ls lib/rubygems/resolver/molinillo/lib/molinillo
delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb
dependency_graph errors.rb modules resolver.rb
~/D/g/b/bundler (master) > ls lib/bundler/vendor/molinillo/lib/molinillo
compatibility.rb dependency_graph errors.rb modules resolver.rb
delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb
rbenv/ruby-build
4.
• The Ruby version manager (not ruby library)
• The Ruby language will be released Dec.25 every
year. You need to take care ruby versions in your
box like Ruby 2.3, 2.4, 2.5…
• Ruby isolates library locations used by Ruby
versions.
• rbenv(and ruby-build) provides an environment
that makes version switching and its build
definitions.
What’s rbenv?
Version number and release cycle
We plan to release every Christmas day.
• 2.1.0: 2013/12/25
• 2.2.0: 2014/12/25
• 2.3.0: 2015/12/25
• 2.4.0: 2016/12/25
• 2.5.0: 2017/12/25
• 2.6.0: 2018/12/25(TBD)
• …
• 3.0.0: 2020/xx/xx
Ruby package manager
RVM
• To support Binary installation
• Applied Custom patchset
• Automatic installation of latest rubygems and
bundler
rbenv/ruby-build
• Modify environment variables.
• I’m also maintain them
chruby/ruby-install
• Modify a few environment variables.
rbenv/ruby-build
You can get them from
• homebrew
• git clone
Basic instructions are:
$ rbenv install 2.5.0
$ rbenv install 2.6.0-dev
$ RUBY_CONFIGURE_OPT=—disable-install-doc rbenv install 2.4.3
$ rbenv install jruby-9.1.16.0
$ RUBY_CONFIGURE_OPT= rbenv install rbx-3.89
RubyGems 3 & 4
5.
• Removed deprecated methods.
• Removed to support for < Ruby 2.2.
• Added warnings of deprecated methods.
• Server/Client side 2FA
What’s new in RubyGems 3?
• Surprisedly, RG 2.7 still supports Ruby 1.8.
Ruby 1.8 in 2018
~/D/g/r/rubygems (2.7) > rg respond_to
test/rubygems/test_gem_request_set_gem_dependency_api.rb
630: tf.close! if tf.respond_to? :close!
test/rubygems/test_gem_source.rb
60: response.uri = URI('http://example') if response.respond_to? :uri
test/rubygems/test_gem_package.rb
755: tf.close! if tf.respond_to? :close!
test/rubygems/test_gem_util.rb
45: if File.respond_to?(:realpath)
test/rubygems/test_gem_installer.rb
58: str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
65:if Gem.respond_to?(:activate_bin_path)
893: skip unless "".respond_to?(:force_encoding)
test/rubygems/test_gem_specification.rb
2305: s.required_rubygems_version = Gem::Requirement.new("> 0".freeze) if s.respond_to? :required_ruby
2316: if s.respond_to? :specification_version then
…snip
• We can use Keywords argument, Refinement,
Other cool features in RubyGems now.
• Simple build matrix
Only support Ruby 2.2+
• It has non-compatible features.
• Make enable as default for conservative option.
• Behaviour changes with default gems installer.
• Executables in bin folder conflict with their gem
versions.
• Make ruby gem install to user-install by default.
RubyGems 4
• We got the installation time when already installed
gems.
• To use conservative is ignore re-install action.
Make conservative option as default
~ > gem i rails
clone http://rubyonrails.org -> /Users/hsbt/Documents/rubyonrails.org
git ls-remote http://rubyonrails.org
hg identify http://rubyonrails.org
svn info http://rubyonrails.org
error Could not find version control system: http://rubyonrails.org
exists /Users/hsbt/Documents/github.com/rails/rails
Successfully installed rails-5.2.0
1 gem installed
~ > gem i rails —conservative
~ >
• Rubygems 4 will install the all gems to `~/.gem`
• Pros: Ruby in linux distribution has many of FAQ for gem
installation for using `sudo`. This change resolve this
issues.
• Cons: Ruby version manager like rbenv is not support it.
And This is big incompatible feature.
Make `--user-install` as default
RubyGems
&
Bundler
6.
• We are working to integrate RubyGems and
Bundler.
• But It’s still working progress status because
there is no plan to release Bundler 2.
• RubyGems 3&4 drop to support under the Ruby
2.2. Because Bundler 1.x still supports Ruby 1.8
and 1.9.
• I’m waiting to release Bundler 2 for this
integration.
RubyGems/Bundler integration
• Bundler was located rubygems repository as git
submodule
Bundler Integration(rubygems.rb)
if USE_BUNDLER_FOR_GEMDEPS
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
require 'rubygems/user_interaction'
Gem::DefaultUserInteraction.use_ui(ui) do
require "bundler"
@gemdeps = Bundler.setup
Bundler.ui = nil
@gemdeps.requested_specs.map(&:to_spec).sort_by(&:name)
end
else
rs = Gem::RequestSet.new
@gemdeps = rs.load_gemdeps path
rs.resolve_current.map do |s|
s.full_spec.tap(&:activate)
end
end
Ruby is designed to make
programmers happy.
Yukihiro Matz Matsumoto

More Related Content

PDF
The Future of Dependency Management for Ruby
PDF
RubyGems 3 & 4
PDF
Dependency Resolution with Standard Libraries
PDF
Gems on Ruby
PDF
Roadmap for RubyGems 4 and Bundler 3
PDF
20140425 ruby conftaiwan2014
PDF
20140419 oedo rubykaigi04
PDF
How to distribute Ruby to the world
The Future of Dependency Management for Ruby
RubyGems 3 & 4
Dependency Resolution with Standard Libraries
Gems on Ruby
Roadmap for RubyGems 4 and Bundler 3
20140425 ruby conftaiwan2014
20140419 oedo rubykaigi04
How to distribute Ruby to the world

What's hot (20)

PDF
How to develop the Standard Libraries of Ruby?
PDF
20140918 ruby kaigi2014
KEY
tDiary annual report 2009 - Sapporo Ruby Kaigi02
PDF
20140925 rails pacific
PDF
How to distribute Ruby to the world
PDF
What's new in RubyGems3
PDF
The details of CI/CD environment for Ruby
PDF
The Future of Bundled Bundler
PDF
From 'Legacy' to 'Edge'
PDF
Gemification for Ruby 2.5/3.0
PDF
How to Begin to Develop Ruby Core
PDF
The Future of library dependency manageement of Ruby
PDF
RubyGems 3 & 4
PDF
Ruby Security the Hard Way
PDF
Middleware as Code with mruby
PDF
20140626 red dotrubyconf2014
PDF
Gemification plan of Standard Library on Ruby
PDF
How DSL works on Ruby
PDF
Gemification for Ruby 2.5/3.0
PDF
Large-scaled Deploy Over 100 Servers in 3 Minutes
How to develop the Standard Libraries of Ruby?
20140918 ruby kaigi2014
tDiary annual report 2009 - Sapporo Ruby Kaigi02
20140925 rails pacific
How to distribute Ruby to the world
What's new in RubyGems3
The details of CI/CD environment for Ruby
The Future of Bundled Bundler
From 'Legacy' to 'Edge'
Gemification for Ruby 2.5/3.0
How to Begin to Develop Ruby Core
The Future of library dependency manageement of Ruby
RubyGems 3 & 4
Ruby Security the Hard Way
Middleware as Code with mruby
20140626 red dotrubyconf2014
Gemification plan of Standard Library on Ruby
How DSL works on Ruby
Gemification for Ruby 2.5/3.0
Large-scaled Deploy Over 100 Servers in 3 Minutes
Ad

Similar to Gems on Ruby (20)

PDF
The Future of library dependency management of Ruby
PPTX
Bundler
PDF
Long journey of Ruby Standard library at RubyKaigi 2024
PPTX
Chennai.rb feb 2016
KEY
Week6
PDF
Extracting ruby gem
ODP
Build-a-Gem Workshop
ODP
Build-a-Gem Workshop
PDF
Long journey of Ruby standard library at RubyConf AU 2024
PDF
How resolve Gem dependencies in your code?
PDF
How to make a Ruby Gem - Austin on Rails, January 2014
PPTX
RubyConfBD 2013 decouple, bundle and share with ruby gems
KEY
Ruby on rails toolbox
KEY
Using rbenv in Production
DOCX
PDF
Let's Make a Gem
PDF
My ruby gems toolbox
PDF
Tricking Bundler
ODP
Rbenv
The Future of library dependency management of Ruby
Bundler
Long journey of Ruby Standard library at RubyKaigi 2024
Chennai.rb feb 2016
Week6
Extracting ruby gem
Build-a-Gem Workshop
Build-a-Gem Workshop
Long journey of Ruby standard library at RubyConf AU 2024
How resolve Gem dependencies in your code?
How to make a Ruby Gem - Austin on Rails, January 2014
RubyConfBD 2013 decouple, bundle and share with ruby gems
Ruby on rails toolbox
Using rbenv in Production
Let's Make a Gem
My ruby gems toolbox
Tricking Bundler
Rbenv
Ad

More from Hiroshi SHIBATA (10)

PDF
Introduction of Cybersecurity with Ruby at RedDotRubyConf 2024
PDF
Introduction of Cybersecurity with OSS at Code Europe 2024
PDF
Deep dive into Ruby's require - RubyConf Taiwan 2023
PDF
How resolve Gem dependencies in your code?
PDF
Ruby コミッターと歩む Ruby を用いたプロダクト開発
PDF
Why ANDPAD commit Ruby and RubyKaigi?
PDF
RailsGirls から始める エンジニアリングはじめの一歩
PDF
OSS Security the hard way
PDF
Productive Organization with Ruby
PDF
The secret of programming language development and future
Introduction of Cybersecurity with Ruby at RedDotRubyConf 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Deep dive into Ruby's require - RubyConf Taiwan 2023
How resolve Gem dependencies in your code?
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Why ANDPAD commit Ruby and RubyKaigi?
RailsGirls から始める エンジニアリングはじめの一歩
OSS Security the hard way
Productive Organization with Ruby
The secret of programming language development and future

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPT
Teaching material agriculture food technology
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
KodekX | Application Modernization Development
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
cuic standard and advanced reporting.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
sap open course for s4hana steps from ECC to s4
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MYSQL Presentation for SQL database connectivity
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Machine learning based COVID-19 study performance prediction
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Teaching material agriculture food technology
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
KodekX | Application Modernization Development
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
cuic standard and advanced reporting.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
20250228 LYD VKU AI Blended-Learning.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx

Gems on Ruby

  • 1. RubyGems/Bundler/rbenv Hiroshi SHIBATA / GMO Pepabo, Inc. 2018.08.26 LL Event 2018 Gems on Ruby
  • 3. Executive Officer CPO(Chief Productivity Officer) Director of Business Process Re-engineering Office Director of Technical Division at GMO Pepabo, Inc. @pepabo Hiroshi SHIBATA @hsbt https://www.hsbt.org
  • 4. self.introduce => { name: “SHIBATA Hiroshi”, nickname: “hsbt”, organizations: [“ruby”, “rubygems”, “bundler”, “asakusarb”, “railsgirls”, “pepabo”, …], commit_bits: [“ruby”, “rake”, “rubygems”, “bundler”, “rdoc”, “psych”, “ruby-build”, “railsgirls”, “railsgirls- jp”, …], sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”, “railsgirls.jp”], }
  • 7. • History • RubyGems • Bundler • rbenv/ruby-build • RubyGems 3.0/4.0 • RubyGems & Bundler Agenda
  • 8. Answer • Must buy “Web+DB Press Vol.103” • You should use RubyGems/Bundler/ rbenv at all.
  • 10. • RAA(Ruby Application Archive) • 2013/08: raa.ruby-lang.org 終了のご報告 https:// www.ruby-lang.org/ja/news/2013/08/08/rip-raa/ • RubyForge • 2009/10: RubyForge To Be Phased Out, RubyGems.org Takes Over Gem Hosting https://www.infoq.com/news/ 2009/10/rubyforge-phased-out-rubygemsorg • gems.github.com • 2009/10: Gem Building is Defunct https://www.infoq.com/ news/2009/10/github-stops-gem-building Packaging and Disribution(1)
  • 11. • gemcutter.org: • https://github.com/rubygems/gemcutter • You can use `gem yank` command after you did invoke `gem i gemcutter`. • rubygems.org: • gemcutter.org was renamed to rubygems.org. • bundler: • 2010: Released to 1.0.0 version. Packaging and Disribution(2)
  • 13. • The package manager of Ruby libraries. • `gem install rails -v “~> 5.2”` • You can install specified version of Ruby libraries that called `Gem`. RubyGems handles global environment on your box. • You could specify `gem ‘rails’, ‘~> 5.2’` syntax without its dependency. What’s rubygems?
  • 14. What does mean “official”? “official” means “Matz controllable” Un-controllable examples: • ruby-doc.org • rubygems.org • bundler.io • Ruby version manager(rvm/rbenv/chruby) “RubyTogether” maintains RubyGems, Bundler and RubyGems.org(Rails Application).
  • 15. • Merge latest stable version into Ruby Core • Ruby 2.6.0 will bundle RubyGems 3.0(TBD) • Ruby 2.7 or 3.0 will bundle RubyGems 4.0(TBD) The policy of RubyGems versioning
  • 16. • RubyGems have HackerOne project. • 3 people handle vulnerability issues. • But We have no workflow about security release. • RubyGems 2.7.6 was accidentally released. Security
  • 18. • The vendoring tool of Ruby. • RubyGems couldn’t care dependency of Ruby libraries and isolate version managing with ruby process. • Bundler can do them with `Gemfile` What’s bundler? # frozen_string_literal: true source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gemspec # We need a newish Rake since Active Job sets its test tasks' descriptions. gem "rake", ">= 11.1"
  • 19. • RubyGems 2.x, 3.x uses Molinillo-0.5.7 • Bundler 1.16.x also uses Molinillo-0.6.4 • These are different versions and behavior of dependency resolver. Dependency Resolver incompatible ~/D/g/r/rubygems (master) > ls lib/rubygems/resolver/molinillo/lib/molinillo delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb dependency_graph errors.rb modules resolver.rb ~/D/g/b/bundler (master) > ls lib/bundler/vendor/molinillo/lib/molinillo compatibility.rb dependency_graph errors.rb modules resolver.rb delegates dependency_graph.rb gem_metadata.rb resolution.rb state.rb
  • 21. • The Ruby version manager (not ruby library) • The Ruby language will be released Dec.25 every year. You need to take care ruby versions in your box like Ruby 2.3, 2.4, 2.5… • Ruby isolates library locations used by Ruby versions. • rbenv(and ruby-build) provides an environment that makes version switching and its build definitions. What’s rbenv?
  • 22. Version number and release cycle We plan to release every Christmas day. • 2.1.0: 2013/12/25 • 2.2.0: 2014/12/25 • 2.3.0: 2015/12/25 • 2.4.0: 2016/12/25 • 2.5.0: 2017/12/25 • 2.6.0: 2018/12/25(TBD) • … • 3.0.0: 2020/xx/xx
  • 23. Ruby package manager RVM • To support Binary installation • Applied Custom patchset • Automatic installation of latest rubygems and bundler rbenv/ruby-build • Modify environment variables. • I’m also maintain them chruby/ruby-install • Modify a few environment variables.
  • 24. rbenv/ruby-build You can get them from • homebrew • git clone Basic instructions are: $ rbenv install 2.5.0 $ rbenv install 2.6.0-dev $ RUBY_CONFIGURE_OPT=—disable-install-doc rbenv install 2.4.3 $ rbenv install jruby-9.1.16.0 $ RUBY_CONFIGURE_OPT= rbenv install rbx-3.89
  • 25. RubyGems 3 & 4 5.
  • 26. • Removed deprecated methods. • Removed to support for < Ruby 2.2. • Added warnings of deprecated methods. • Server/Client side 2FA What’s new in RubyGems 3?
  • 27. • Surprisedly, RG 2.7 still supports Ruby 1.8. Ruby 1.8 in 2018 ~/D/g/r/rubygems (2.7) > rg respond_to test/rubygems/test_gem_request_set_gem_dependency_api.rb 630: tf.close! if tf.respond_to? :close! test/rubygems/test_gem_source.rb 60: response.uri = URI('http://example') if response.respond_to? :uri test/rubygems/test_gem_package.rb 755: tf.close! if tf.respond_to? :close! test/rubygems/test_gem_util.rb 45: if File.respond_to?(:realpath) test/rubygems/test_gem_installer.rb 58: str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding 65:if Gem.respond_to?(:activate_bin_path) 893: skip unless "".respond_to?(:force_encoding) test/rubygems/test_gem_specification.rb 2305: s.required_rubygems_version = Gem::Requirement.new("> 0".freeze) if s.respond_to? :required_ruby 2316: if s.respond_to? :specification_version then …snip
  • 28. • We can use Keywords argument, Refinement, Other cool features in RubyGems now. • Simple build matrix Only support Ruby 2.2+
  • 29. • It has non-compatible features. • Make enable as default for conservative option. • Behaviour changes with default gems installer. • Executables in bin folder conflict with their gem versions. • Make ruby gem install to user-install by default. RubyGems 4
  • 30. • We got the installation time when already installed gems. • To use conservative is ignore re-install action. Make conservative option as default ~ > gem i rails clone http://rubyonrails.org -> /Users/hsbt/Documents/rubyonrails.org git ls-remote http://rubyonrails.org hg identify http://rubyonrails.org svn info http://rubyonrails.org error Could not find version control system: http://rubyonrails.org exists /Users/hsbt/Documents/github.com/rails/rails Successfully installed rails-5.2.0 1 gem installed ~ > gem i rails —conservative ~ >
  • 31. • Rubygems 4 will install the all gems to `~/.gem` • Pros: Ruby in linux distribution has many of FAQ for gem installation for using `sudo`. This change resolve this issues. • Cons: Ruby version manager like rbenv is not support it. And This is big incompatible feature. Make `--user-install` as default
  • 33. • We are working to integrate RubyGems and Bundler. • But It’s still working progress status because there is no plan to release Bundler 2. • RubyGems 3&4 drop to support under the Ruby 2.2. Because Bundler 1.x still supports Ruby 1.8 and 1.9. • I’m waiting to release Bundler 2 for this integration. RubyGems/Bundler integration
  • 34. • Bundler was located rubygems repository as git submodule Bundler Integration(rubygems.rb) if USE_BUNDLER_FOR_GEMDEPS ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path) require 'rubygems/user_interaction' Gem::DefaultUserInteraction.use_ui(ui) do require "bundler" @gemdeps = Bundler.setup Bundler.ui = nil @gemdeps.requested_specs.map(&:to_spec).sort_by(&:name) end else rs = Gem::RequestSet.new @gemdeps = rs.load_gemdeps path rs.resolve_current.map do |s| s.full_spec.tap(&:activate) end end
  • 35. Ruby is designed to make programmers happy. Yukihiro Matz Matsumoto