SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
The Package Manager of the Ruby Language
Hiroshi SHIBATA / GMO Pepabo, Inc.
2019.3.22 Railsdm 2019
What’s new
In RubyGems3
self.introduce
Executive Officer VP of Engineering
Technical Director
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”, “json”, “ruby-build”, “railsgirls”, “railsgirls-jp”, …],
sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”,
“railsgirls.jp”],
}
•The RubyGems team
•RubyGems
•RubyGems 3
•RubyGems 4
•Bundler
•RubyGems Bundler Integration
Agenda
The RubyGem team
1.
Who are RubyGems Team member?
alumni
alumni
alumni
SRE
Dev
Dev
Dev
Dev
Specific roles
Release Manager
@hsbt: Master branch as 3.1, 3.0 and 2.7
Security Handler
@hsbt: HackerOne and Private Repository
Fulltime Commiter
@deivid-rodriguez: Supported by RubyTogether
RubyGems
3.
•The package manager of Ruby libraries.
•`gem install “rails:~>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 in your code.
What’s rubygems?
•The RubyGems accepts SemVer like
versioning Policy.
•Merge latest stable version into Ruby Core
•Ruby 2.6.0 bundled RubyGems 3.0
•Ruby 2.7.0 will bundle RubyGems 3.1 or
4.0(TBD)
•Ruby 3.0 will bundle RubyGems ???
The policy of RubyGems versioning
•RubyGems also have HackerOne.
•3 people handle vulnerability issues and
will release RubyGems by SemVer Policy
like “2.7.7” from “2.7.6”
•On the other hand, The Ruby core team will
back port only vulnerability fixes by
independent version like “2.6.5.1”, not
“2.7.7”
Security release of RubyGems
How develop RubyGems?
• The canonical repository is https://
github.com/rubygems/rubygems.
• https://github.com/rubygems/
rubygems.org is rubygems.org. It’s not
client software.
• We use Pull-Request and
merge bot named
`@bundlerbot`
RubyGems 3
5.
•I released RubyGems 3 at 19 Dec 2018
•https://blog.rubygems.org/
2018/12/19/3.0.0-released.html
•It says 5 major updates.
• S3 source. Pull request #1690 by Aditya Prakash.
• Download gems with threads. Pull request #1898 by André Arko.
• Update to SPDX license list 3.0. Pull request #2152 by Mike
Linksvayer.
• [GSoC] Multi-factor feature for RubyGems. Pull request #2369 by
Qiu Chaofan.
• Use bundler 1.17.2. Pull request #2521 by SHIBATA Hiroshi.
RubyGems 3 has been released
•We use the changelog generator
from commit logs.
•https://github.com/rubygems/
rubygems/blob/master/util/
update_changelog.rb
•It picked by @bundlerbot
messages.
•Because the changelog is not
structured text.
Where come from the changelog?
changelog.introduce
•https://github.com/rubygems/rubygems/
pull/1898
•It introduced `concurrent_downloads`
option at `.gemrc`. The default value is 8.
•It makes 8 times faster with `gem install`.
Download gems with threads
•https://github.com/rubygems/
rubygems/pull/2369
•It introduced the multi-factor
authentication for gem management
by CLI like `gem push`
•https://guides.rubygems.org/setting-
up-multifactor-authentication/
Multi-factor feature for RubyGems
•https://github.com/rubygems/rubygems/
pull/2142
•Related with https://nvd.nist.gov/vuln/
detail/CVE-2017-17405
•Given the pipe operator `|`, the attacker can
execute a malicious code.
Use File.open instead of open
•https://github.com/rubygems/rubygems/
pull/2207
Added coverage ability used by simplecov
~/D/g/r/rubygems (master) > rake test
Run options: --seed 2662
# Running:
...................................................................................................................
......
(snip)
...........................................................................S.......................................
.........................................
Finished in 72.010573s, 29.0513 runs/s, 90.0423 assertions/s.
2092 runs, 6484 assertions, 0 failures, 0 errors, 1 skips
You have skipped tests. Run with --verbose for details.
Coverage report generated for Unit Tests to /Users/hsbt/Documents/github.com/rubygems/rubygems/coverage. 8219 /
9194 LOC (89.4%) covered.
•https://github.com/rubygems/rubygems/
pull/2278
•It makes gem spec reproducible.
•https://reproducible-builds.org/specs/
source-date-epoch/
•I’m not familiar with it…
Support SOURCE_DATE_EPOCH
•https://github.com/rubygems/rubygems/
pull/2308
•https://github.com/rubygems/rubygems/
pull/2023 introduces `gem info` command.
It avoid to use `gem i`.
Add alias command ‘i’ for ‘install’
% gem i bundler
ERROR: While executing gem ... (Gem::CommandLineError)
Ambiguous command i matches [info, install]
•https://github.com/rubygems/rubygems/
pull/2466
•Now, RubyGems supports above options for
`gem uninstall`
Uninstall with versions 
% gem i bundler:1.17.3
% gem uninstall bundler:1.17.3
•Removed deprecated methods.
•Removed to support for < Ruby 2.2.
•Removed Syck support.
•Added warnings of deprecated methods.
•Removed deprecated options.
•[CAUTION] `--ri` and `--rdoc` options
Cleanup Code-base
Added Rubocop
AllCops:
DisabledByDefault: true
Exclude:
- 'bundler/**/*'
- 'lib/rubygems/resolver/molinillo/**/*'
- 'pkg/**/*'
TargetRubyVersion: 2.3
Layout/AccessModifierIndentation:
Enabled: true
Layout/BlockAlignment:
Enabled: true
Layout/CaseIndentation:
Enabled: true
Layout/ClosingParenthesisIndentation:
Enabled: true
Layout/CommentIndentation:
Enabled: true
Layout/ElseAlignment:
Enabled: true
MultilineIfThen:
Enabled: true
•BundlerVersionFinder was introduced at
RubyGems 2.7
•It ability is the version detection by
RubyGems with Gemfile.lock strictly. Ex.
1.17.3 matches only 1.17.3
•We update it condition. Now, 1.17.3
matches 1.x.y, 2.0.3 also matches 2.x.y.
Update Bundler Version Finder
RubyGems 4
4.
•It has non-compatible features.
• Make enable as default for conservative option:
https://github.com/rubygems/rubygems/pull/2233
• Make ruby gem install to user-install by default:
https://github.com/rubygems/rubygems/issues/1394
• Executables in bin folder conflict with their gem
versions: https://bugs.ruby-lang.org/issues/5060
• Behaviour changes with default gems installer:
https://github.com/rubygems/rubygems/pull/2166
What’s new in RubyGems4?
•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
under the `~/.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
Bundler
5.
•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"
•We released 1.17.x and 2.0.x at last year.
•We disabled the incompatible features like
renaming `gems.rb` from `Gemfile`
•They no longer support under the Ruby 2.2.
What’s new in Bundler 2?
RubyGems
Bundler
Integration
6.
•We are working to integrate RubyGems and
Bundler.
•I’m working it because Bundler 2 was
released.
•RubyGems 3&4 drop to support under the
Ruby 2.2. Because Bundler 1.x still
supports Ruby 1.8 and 1.9.
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
•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
•RubyGems and Bundler stored the
duplicated certificates in your box.
Duplicates the certificates
~/D/g/r/rubygems (master) > fd . lib/rubygems/ssl_certs/
lib/rubygems/ssl_certs/index.rubygems.org
lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net
lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
lib/rubygems/ssl_certs/rubygems.org
lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
~/D/g/r/rubygems (master) > fd . bundler/lib/bundler/ssl_certs/
bundler/lib/bundler/ssl_certs/index.rubygems.org
bundler/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem
bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net
bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem
bundler/lib/bundler/ssl_certs/rubygems.org
bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
•We will move the canonical repository of bundler
to rubygems org or rubygems/rubygems(TBD).
•I have a plan to integrate code-base and
command-line interface. Ex. `gem install`
fallback to `bundle install` with no arguments.
(TBD)
•After RubyKaigi 2019, the rubygems/bundler
team member will discuss about this merger
consideration in Fukuoka.
RubyGems/Bundler integration
❤

Weitere ähnliche Inhalte

Was ist angesagt?

Dependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesDependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesHiroshi SHIBATA
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard WayHiroshi SHIBATA
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the worldHiroshi SHIBATA
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?Hiroshi SHIBATA
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mrubyHiroshi SHIBATA
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014Hiroshi SHIBATA
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04Hiroshi SHIBATA
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for RubyHiroshi SHIBATA
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHiroshi SHIBATA
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02Hiroshi SHIBATA
 
20141210 rakuten techtalk
20141210 rakuten techtalk20141210 rakuten techtalk
20141210 rakuten techtalkHiroshi SHIBATA
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHiroshi SHIBATA
 

Was ist angesagt? (20)

Dependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesDependency Resolution with Standard Libraries
Dependency Resolution with Standard Libraries
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
20140925 rails pacific
20140925 rails pacific20140925 rails pacific
20140925 rails pacific
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby Core
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
20141210 rakuten techtalk
20141210 rakuten techtalk20141210 rakuten techtalk
20141210 rakuten techtalk
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rb
 

Ähnlich wie What's new in RubyGems3

The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and futureHiroshi SHIBATA
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mrubyHiroshi SHIBATA
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudHiro Asari
 
My rails way
My rails wayMy rails way
My rails waywildjcrt
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Brian Sam-Bodden
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby TeamArto Artnik
 
Rails入門與新人實戰經驗分享
Rails入門與新人實戰經驗分享Rails入門與新人實戰經驗分享
Rails入門與新人實戰經驗分享wildjcrt
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyHiroshi SHIBATA
 
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...Michael Kimathi
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPPavel Tyk
 
What would your own version of Ruby look like?
What would your own version of Ruby look like?What would your own version of Ruby look like?
What would your own version of Ruby look like?Hung Wu Lo
 
Rapid RIA development with Netzke
Rapid RIA development with NetzkeRapid RIA development with Netzke
Rapid RIA development with Netzkenetzke
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIIvan Nemytchenko
 
Automated Releases to RubyGems.org using Travis-CI.org
Automated Releases to RubyGems.org using Travis-CI.orgAutomated Releases to RubyGems.org using Travis-CI.org
Automated Releases to RubyGems.org using Travis-CI.orgFrancis Luong
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneVEXXHOST Private Cloud
 
Women Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API WorkshopWomen Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API WorkshopEddie Lau
 

Ähnlich wie What's new in RubyGems3 (20)

The story of language development
The story of language developmentThe story of language development
The story of language development
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the Cloud
 
My rails way
My rails wayMy rails way
My rails way
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013Rspec and Capybara Intro Tutorial at RailsConf 2013
Rspec and Capybara Intro Tutorial at RailsConf 2013
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Rails入門與新人實戰經驗分享
Rails入門與新人實戰經驗分享Rails入門與新人實戰經驗分享
Rails入門與新人實戰經驗分享
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on Ruby
 
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
 
What would your own version of Ruby look like?
What would your own version of Ruby look like?What would your own version of Ruby look like?
What would your own version of Ruby look like?
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
 
Rapid RIA development with Netzke
Rapid RIA development with NetzkeRapid RIA development with Netzke
Rapid RIA development with Netzke
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CI
 
Automated Releases to RubyGems.org using Travis-CI.org
Automated Releases to RubyGems.org using Travis-CI.orgAutomated Releases to RubyGems.org using Travis-CI.org
Automated Releases to RubyGems.org using Travis-CI.org
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub Clone
 
Women Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API WorkshopWomen Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API Workshop
 
11 Ruby Gems
11 Ruby Gems11 Ruby Gems
11 Ruby Gems
 

Mehr von Hiroshi SHIBATA

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023Hiroshi SHIBATA
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?Hiroshi SHIBATA
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?Hiroshi SHIBATA
 
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発Hiroshi SHIBATA
 
Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?Hiroshi SHIBATA
 
RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩Hiroshi SHIBATA
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with RubyHiroshi SHIBATA
 

Mehr von Hiroshi SHIBATA (8)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?
 
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発
 
Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?
 
RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with Ruby
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

What's new in RubyGems3

  • 1. The Package Manager of the Ruby Language Hiroshi SHIBATA / GMO Pepabo, Inc. 2019.3.22 Railsdm 2019 What’s new In RubyGems3
  • 3. Executive Officer VP of Engineering Technical Director 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”, “json”, “ruby-build”, “railsgirls”, “railsgirls-jp”, …], sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”, “railsgirls.jp”], }
  • 5.
  • 6.
  • 7.
  • 8. •The RubyGems team •RubyGems •RubyGems 3 •RubyGems 4 •Bundler •RubyGems Bundler Integration Agenda
  • 10. Who are RubyGems Team member? alumni alumni alumni SRE Dev Dev Dev Dev
  • 11.
  • 12. Specific roles Release Manager @hsbt: Master branch as 3.1, 3.0 and 2.7 Security Handler @hsbt: HackerOne and Private Repository Fulltime Commiter @deivid-rodriguez: Supported by RubyTogether
  • 14. •The package manager of Ruby libraries. •`gem install “rails:~>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 in your code. What’s rubygems?
  • 15. •The RubyGems accepts SemVer like versioning Policy. •Merge latest stable version into Ruby Core •Ruby 2.6.0 bundled RubyGems 3.0 •Ruby 2.7.0 will bundle RubyGems 3.1 or 4.0(TBD) •Ruby 3.0 will bundle RubyGems ??? The policy of RubyGems versioning
  • 16. •RubyGems also have HackerOne. •3 people handle vulnerability issues and will release RubyGems by SemVer Policy like “2.7.7” from “2.7.6” •On the other hand, The Ruby core team will back port only vulnerability fixes by independent version like “2.6.5.1”, not “2.7.7” Security release of RubyGems
  • 17. How develop RubyGems? • The canonical repository is https:// github.com/rubygems/rubygems. • https://github.com/rubygems/ rubygems.org is rubygems.org. It’s not client software. • We use Pull-Request and merge bot named `@bundlerbot`
  • 19. •I released RubyGems 3 at 19 Dec 2018 •https://blog.rubygems.org/ 2018/12/19/3.0.0-released.html •It says 5 major updates. • S3 source. Pull request #1690 by Aditya Prakash. • Download gems with threads. Pull request #1898 by André Arko. • Update to SPDX license list 3.0. Pull request #2152 by Mike Linksvayer. • [GSoC] Multi-factor feature for RubyGems. Pull request #2369 by Qiu Chaofan. • Use bundler 1.17.2. Pull request #2521 by SHIBATA Hiroshi. RubyGems 3 has been released
  • 20. •We use the changelog generator from commit logs. •https://github.com/rubygems/ rubygems/blob/master/util/ update_changelog.rb •It picked by @bundlerbot messages. •Because the changelog is not structured text. Where come from the changelog?
  • 22. •https://github.com/rubygems/rubygems/ pull/1898 •It introduced `concurrent_downloads` option at `.gemrc`. The default value is 8. •It makes 8 times faster with `gem install`. Download gems with threads
  • 23. •https://github.com/rubygems/ rubygems/pull/2369 •It introduced the multi-factor authentication for gem management by CLI like `gem push` •https://guides.rubygems.org/setting- up-multifactor-authentication/ Multi-factor feature for RubyGems
  • 24. •https://github.com/rubygems/rubygems/ pull/2142 •Related with https://nvd.nist.gov/vuln/ detail/CVE-2017-17405 •Given the pipe operator `|`, the attacker can execute a malicious code. Use File.open instead of open
  • 25. •https://github.com/rubygems/rubygems/ pull/2207 Added coverage ability used by simplecov ~/D/g/r/rubygems (master) > rake test Run options: --seed 2662 # Running: ................................................................................................................... ...... (snip) ...........................................................................S....................................... ......................................... Finished in 72.010573s, 29.0513 runs/s, 90.0423 assertions/s. 2092 runs, 6484 assertions, 0 failures, 0 errors, 1 skips You have skipped tests. Run with --verbose for details. Coverage report generated for Unit Tests to /Users/hsbt/Documents/github.com/rubygems/rubygems/coverage. 8219 / 9194 LOC (89.4%) covered.
  • 26. •https://github.com/rubygems/rubygems/ pull/2278 •It makes gem spec reproducible. •https://reproducible-builds.org/specs/ source-date-epoch/ •I’m not familiar with it… Support SOURCE_DATE_EPOCH
  • 27. •https://github.com/rubygems/rubygems/ pull/2308 •https://github.com/rubygems/rubygems/ pull/2023 introduces `gem info` command. It avoid to use `gem i`. Add alias command ‘i’ for ‘install’ % gem i bundler ERROR: While executing gem ... (Gem::CommandLineError) Ambiguous command i matches [info, install]
  • 28. •https://github.com/rubygems/rubygems/ pull/2466 •Now, RubyGems supports above options for `gem uninstall` Uninstall with versions  % gem i bundler:1.17.3 % gem uninstall bundler:1.17.3
  • 29. •Removed deprecated methods. •Removed to support for < Ruby 2.2. •Removed Syck support. •Added warnings of deprecated methods. •Removed deprecated options. •[CAUTION] `--ri` and `--rdoc` options Cleanup Code-base
  • 30. Added Rubocop AllCops: DisabledByDefault: true Exclude: - 'bundler/**/*' - 'lib/rubygems/resolver/molinillo/**/*' - 'pkg/**/*' TargetRubyVersion: 2.3 Layout/AccessModifierIndentation: Enabled: true Layout/BlockAlignment: Enabled: true Layout/CaseIndentation: Enabled: true Layout/ClosingParenthesisIndentation: Enabled: true Layout/CommentIndentation: Enabled: true Layout/ElseAlignment: Enabled: true MultilineIfThen: Enabled: true
  • 31. •BundlerVersionFinder was introduced at RubyGems 2.7 •It ability is the version detection by RubyGems with Gemfile.lock strictly. Ex. 1.17.3 matches only 1.17.3 •We update it condition. Now, 1.17.3 matches 1.x.y, 2.0.3 also matches 2.x.y. Update Bundler Version Finder
  • 33. •It has non-compatible features. • Make enable as default for conservative option: https://github.com/rubygems/rubygems/pull/2233 • Make ruby gem install to user-install by default: https://github.com/rubygems/rubygems/issues/1394 • Executables in bin folder conflict with their gem versions: https://bugs.ruby-lang.org/issues/5060 • Behaviour changes with default gems installer: https://github.com/rubygems/rubygems/pull/2166 What’s new in RubyGems4?
  • 34. •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 ~ >
  • 35. •Rubygems 4 will install the all gems to under the `~/.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
  • 37. •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"
  • 38.
  • 39. •We released 1.17.x and 2.0.x at last year. •We disabled the incompatible features like renaming `gems.rb` from `Gemfile` •They no longer support under the Ruby 2.2. What’s new in Bundler 2?
  • 41. •We are working to integrate RubyGems and Bundler. •I’m working it because Bundler 2 was released. •RubyGems 3&4 drop to support under the Ruby 2.2. Because Bundler 1.x still supports Ruby 1.8 and 1.9. RubyGems/Bundler integration
  • 42. •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
  • 43. •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
  • 44. •RubyGems and Bundler stored the duplicated certificates in your box. Duplicates the certificates ~/D/g/r/rubygems (master) > fd . lib/rubygems/ssl_certs/ lib/rubygems/ssl_certs/index.rubygems.org lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem lib/rubygems/ssl_certs/rubygems.org lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem ~/D/g/r/rubygems (master) > fd . bundler/lib/bundler/ssl_certs/ bundler/lib/bundler/ssl_certs/index.rubygems.org bundler/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem bundler/lib/bundler/ssl_certs/rubygems.org bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem
  • 45. •We will move the canonical repository of bundler to rubygems org or rubygems/rubygems(TBD). •I have a plan to integrate code-base and command-line interface. Ex. `gem install` fallback to `bundle install` with no arguments. (TBD) •After RubyKaigi 2019, the rubygems/bundler team member will discuss about this merger consideration in Fukuoka. RubyGems/Bundler integration
  • 46.