bundler 2.3.17 → 2.3.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/lib/bundler/build_metadata.rb +2 -2
  4. data/lib/bundler/compact_index_client/updater.rb +16 -3
  5. data/lib/bundler/definition.rb +20 -6
  6. data/lib/bundler/dependency.rb +2 -1
  7. data/lib/bundler/dsl.rb +1 -1
  8. data/lib/bundler/gem_helpers.rb +1 -0
  9. data/lib/bundler/lazy_specification.rb +2 -2
  10. data/lib/bundler/lockfile_parser.rb +4 -0
  11. data/lib/bundler/man/bundle-add.1 +1 -1
  12. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  13. data/lib/bundler/man/bundle-cache.1 +1 -1
  14. data/lib/bundler/man/bundle-check.1 +1 -1
  15. data/lib/bundler/man/bundle-clean.1 +1 -1
  16. data/lib/bundler/man/bundle-config.1 +1 -1
  17. data/lib/bundler/man/bundle-doctor.1 +1 -1
  18. data/lib/bundler/man/bundle-exec.1 +1 -1
  19. data/lib/bundler/man/bundle-gem.1 +1 -1
  20. data/lib/bundler/man/bundle-info.1 +1 -1
  21. data/lib/bundler/man/bundle-init.1 +1 -1
  22. data/lib/bundler/man/bundle-inject.1 +1 -1
  23. data/lib/bundler/man/bundle-install.1 +1 -1
  24. data/lib/bundler/man/bundle-list.1 +1 -1
  25. data/lib/bundler/man/bundle-lock.1 +1 -1
  26. data/lib/bundler/man/bundle-open.1 +1 -1
  27. data/lib/bundler/man/bundle-outdated.1 +1 -1
  28. data/lib/bundler/man/bundle-platform.1 +1 -1
  29. data/lib/bundler/man/bundle-pristine.1 +1 -1
  30. data/lib/bundler/man/bundle-remove.1 +1 -1
  31. data/lib/bundler/man/bundle-show.1 +1 -1
  32. data/lib/bundler/man/bundle-update.1 +1 -1
  33. data/lib/bundler/man/bundle-viz.1 +1 -1
  34. data/lib/bundler/man/bundle.1 +1 -1
  35. data/lib/bundler/man/gemfile.5 +62 -38
  36. data/lib/bundler/man/gemfile.5.ronn +52 -38
  37. data/lib/bundler/resolver/spec_group.rb +5 -4
  38. data/lib/bundler/resolver.rb +5 -2
  39. data/lib/bundler/runtime.rb +0 -1
  40. data/lib/bundler/source/rubygems.rb +12 -6
  41. data/lib/bundler/spec_set.rb +2 -2
  42. data/lib/bundler/version.rb +1 -1
  43. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 364d4bc2c2c1f342aa034417b9e30074317878931bf34e90ddf6c42d3ae539c2
4
- data.tar.gz: dad782afd5246e703b67d004c7282a89132f0ebe699d8e8306387fb8db179193
3
+ metadata.gz: 677949dc949f82b847c011ee0a401b180743c294d2ea7cc62d1d969483289a59
4
+ data.tar.gz: 4ad73bf323c1b3fe9370af0b853992249126ce54624fb97ea5e454f15dbb1e3f
5
5
  SHA512:
6
- metadata.gz: 463cc7534f4164ae4d2e4c67d1ed57dcc9a40494c496f0b06e11ac8f2b3599ea0dbc74be8772a98abb2d09c119db2da8f1d85cde6bafe83319051de3e24a46f2
7
- data.tar.gz: 61b997e77634dc3a7d812adb805f899bb8bbae48bd25aad2884906c818d21853e76fd0db8bfbd95ee79689c25567e346e9c468fbe1321768c2614518f0e78356
6
+ metadata.gz: 83b95a19fc8a0077e2660776321547d1b33a83fde01a60819d624b1a5df19e825cd6173d07f595b050f4b6686d82587a886bd5c1f88629b77538d24df65e09d3
7
+ data.tar.gz: c29b1d158826b44d561a3dc3484f4a498bbfb9dd2d764160cbb16e5d84e78d7ef3098ce4b67a275f3d5622f94f0739cdf8f599d2e1bb17a20cc88137f82fa190
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ # 2.3.18 (July 14, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Extend `gem` DSL with a `force_ruby_platform` option [#4049](https://github.com/rubygems/rubygems/pull/4049)
6
+
7
+ ## Bug fixes:
8
+
9
+ - Fix misleading error if compact index cannot be copied [#5709](https://github.com/rubygems/rubygems/pull/5709)
10
+ - Fix TruffleRuby no longer able to install lockfiles generated with other implementations [#5711](https://github.com/rubygems/rubygems/pull/5711)
11
+ - Fix TruffleRuby no longer installing lockfiles using "ruby" platform correctly [#5694](https://github.com/rubygems/rubygems/pull/5694)
12
+ - Fix crash when updating vendor cache of default gems [#5679](https://github.com/rubygems/rubygems/pull/5679)
13
+
14
+ ## Performance:
15
+
16
+ - Speed up `bundler/setup` by using the raw `Gemfile.lock` information without extra processing whenever possible [#5695](https://github.com/rubygems/rubygems/pull/5695)
17
+
18
+ ## Documentation:
19
+
20
+ - Use modern style hashes in Gemfile DSL docs [#5674](https://github.com/rubygems/rubygems/pull/5674)
21
+
1
22
  # 2.3.17 (June 29, 2022)
2
23
 
3
24
  ## Enhancements:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2022-06-29".freeze
8
- @git_commit_sha = "539b20c172".freeze
7
+ @built_at = "2022-07-14".freeze
8
+ @git_commit_sha = "fc31b7f7d9".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -31,9 +31,8 @@ module Bundler
31
31
 
32
32
  # first try to fetch any new bytes on the existing file
33
33
  if retrying.nil? && local_path.file?
34
- SharedHelpers.filesystem_access(local_temp_path) do
35
- FileUtils.cp local_path, local_temp_path
36
- end
34
+ copy_file local_path, local_temp_path
35
+
37
36
  headers["If-None-Match"] = etag_for(local_temp_path)
38
37
  headers["Range"] =
39
38
  if local_temp_path.size.nonzero?
@@ -98,6 +97,20 @@ module Bundler
98
97
  SharedHelpers.digest(:MD5).hexdigest(File.read(path))
99
98
  end
100
99
  end
100
+
101
+ private
102
+
103
+ def copy_file(source, dest)
104
+ SharedHelpers.filesystem_access(source, :read) do
105
+ File.open(source, "r") do |s|
106
+ SharedHelpers.filesystem_access(dest, :write) do
107
+ File.open(dest, "wb", s.stat.mode) do |f|
108
+ IO.copy_stream(s, f)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
101
114
  end
102
115
  end
103
116
  end
@@ -235,6 +235,14 @@ module Bundler
235
235
  @locked_deps.values
236
236
  end
237
237
 
238
+ def new_deps
239
+ @new_deps ||= @dependencies - locked_dependencies
240
+ end
241
+
242
+ def deleted_deps
243
+ @deleted_deps ||= locked_dependencies - @dependencies
244
+ end
245
+
238
246
  def specs_for(groups)
239
247
  return specs if groups.empty?
240
248
  deps = dependencies_for(groups)
@@ -259,8 +267,17 @@ module Bundler
259
267
  Bundler.ui.debug "Frozen, using resolution from the lockfile"
260
268
  @locked_specs
261
269
  elsif !unlocking? && nothing_changed?
262
- Bundler.ui.debug("Found no changes, using resolution from the lockfile")
263
- SpecSet.new(filter_specs(@locked_specs, @dependencies.select {|dep| @locked_specs[dep].any? }))
270
+ if deleted_deps.any?
271
+ Bundler.ui.debug("Some dependencies were deleted, using a subset of the resolution from the lockfile")
272
+ SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
273
+ else
274
+ Bundler.ui.debug("Found no changes, using resolution from the lockfile")
275
+ if @locked_gems.may_include_redundant_platform_specific_gems?
276
+ SpecSet.new(filter_specs(@locked_specs, @dependencies))
277
+ else
278
+ @locked_specs
279
+ end
280
+ end
264
281
  else
265
282
  last_resolve = converge_locked_specs
266
283
  # Run a resolve against the locally available gems
@@ -359,9 +376,6 @@ module Bundler
359
376
  added.concat new_platforms.map {|p| "* platform: #{p}" }
360
377
  deleted.concat deleted_platforms.map {|p| "* platform: #{p}" }
361
378
 
362
- new_deps = @dependencies - locked_dependencies
363
- deleted_deps = locked_dependencies - @dependencies
364
-
365
379
  added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
366
380
  deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
367
381
 
@@ -806,7 +820,7 @@ module Bundler
806
820
  return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
807
821
  converge_specs(@originally_locked_specs).map do |locked_spec|
808
822
  name = locked_spec.name
809
- dep = Gem::Dependency.new(name, ">= #{locked_spec.version}")
823
+ dep = Dependency.new(name, ">= #{locked_spec.version}")
810
824
  DepProxy.get_proxy(dep, locked_spec.platform)
811
825
  end
812
826
  end
@@ -7,7 +7,7 @@ require_relative "rubygems_ext"
7
7
  module Bundler
8
8
  class Dependency < Gem::Dependency
9
9
  attr_reader :autorequire
10
- attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref
10
+ attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref, :force_ruby_platform
11
11
 
12
12
  # rubocop:disable Naming/VariableNumber
13
13
  PLATFORM_MAP = {
@@ -109,6 +109,7 @@ module Bundler
109
109
  @env = options["env"]
110
110
  @should_include = options.fetch("should_include", true)
111
111
  @gemfile = options["gemfile"]
112
+ @force_ruby_platform = options["force_ruby_platform"]
112
113
 
113
114
  @autorequire = Array(options["require"] || []) if options.key?("require")
114
115
  end
data/lib/bundler/dsl.rb CHANGED
@@ -16,7 +16,7 @@ module Bundler
16
16
  VALID_PLATFORMS = Bundler::Dependency::PLATFORM_MAP.keys.freeze
17
17
 
18
18
  VALID_KEYS = %w[group groups git path glob name branch ref tag require submodules
19
- platform platforms type source install_if gemfile].freeze
19
+ platform platforms type source install_if gemfile force_ruby_platform].freeze
20
20
 
21
21
  GITHUB_PULL_REQUEST_URL = %r{\Ahttps://github\.com/([A-Za-z0-9_\-\.]+/[A-Za-z0-9_\-\.]+)/pull/(\d+)\z}.freeze
22
22
 
@@ -5,6 +5,7 @@ module Bundler
5
5
  GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
6
6
  GENERICS = [
7
7
  [Gem::Platform.new("java"), Gem::Platform.new("java")],
8
+ [Gem::Platform.new("universal-java"), Gem::Platform.new("java")],
8
9
  [Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")],
9
10
  [Gem::Platform.new("mswin64"), Gem::Platform.new("mswin64")],
10
11
  [Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
@@ -7,7 +7,7 @@ module Bundler
7
7
  include MatchPlatform
8
8
 
9
9
  attr_reader :name, :version, :dependencies, :platform
10
- attr_accessor :source, :remote
10
+ attr_accessor :source, :remote, :force_ruby_platform
11
11
 
12
12
  def initialize(name, version, platform, source = nil)
13
13
  @name = name
@@ -152,7 +152,7 @@ module Bundler
152
152
  # explicitly add a more specific platform.
153
153
  #
154
154
  def ruby_platform_materializes_to_ruby_platform?
155
- !Bundler.most_specific_locked_platform?(generic_local_platform) || Bundler.settings[:force_ruby_platform]
155
+ !Bundler.most_specific_locked_platform?(generic_local_platform) || force_ruby_platform || Bundler.settings[:force_ruby_platform]
156
156
  end
157
157
  end
158
158
  end
@@ -93,6 +93,10 @@ module Bundler
93
93
  "and then `bundle install` to generate a new lockfile."
94
94
  end
95
95
 
96
+ def may_include_redundant_platform_specific_gems?
97
+ bundler_version.nil? || bundler_version < Gem::Version.new("1.16.2")
98
+ end
99
+
96
100
  private
97
101
 
98
102
  TYPES = {
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-BINSTUBS" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-BINSTUBS" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CACHE" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-CACHE" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CHECK" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-CHECK" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CLEAN" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONFIG" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-DOCTOR" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-DOCTOR" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-EXEC" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-EXEC" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-exec\fR \- Execute a command in the context of the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-GEM" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-GEM" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INFO" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INIT" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INJECT" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INSTALL" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LIST" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-LIST" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-list\fR \- List all the gems in the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LOCK" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-LOCK" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OPEN" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-OPEN" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OUTDATED" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-OUTDATED" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLATFORM" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-PLATFORM" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-platform\fR \- Displays platform compatibility information
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PRISTINE" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-REMOVE" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-REMOVE" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-SHOW" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-SHOW" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-UPDATE" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-UPDATE" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-update\fR \- Update your gems to the latest available versions
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VIZ" "1" "May 2022" "" ""
4
+ .TH "BUNDLE\-VIZ" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE" "1" "May 2022" "" ""
4
+ .TH "BUNDLE" "1" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\fR \- Ruby Dependency Management
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GEMFILE" "5" "May 2022" "" ""
4
+ .TH "GEMFILE" "5" "June 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
@@ -100,7 +100,7 @@ Each application \fImay\fR specify a Ruby engine version\. If an engine version
100
100
  .
101
101
  .nf
102
102
 
103
- ruby "1\.8\.7", :engine => "jruby", :engine_version => "1\.6\.7"
103
+ ruby "1\.8\.7", engine: "jruby", engine_version: "1\.6\.7"
104
104
  .
105
105
  .fi
106
106
  .
@@ -113,7 +113,7 @@ Each application \fImay\fR specify a Ruby patchlevel\.
113
113
  .
114
114
  .nf
115
115
 
116
- ruby "2\.0\.0", :patchlevel => "247"
116
+ ruby "2\.0\.0", patchlevel: "247"
117
117
  .
118
118
  .fi
119
119
  .
@@ -156,9 +156,9 @@ Each \fIgem\fR \fBMAY\fR specify files that should be used when autorequiring vi
156
156
  .
157
157
  .nf
158
158
 
159
- gem "redis", :require => ["redis/connection/hiredis", "redis"]
160
- gem "webmock", :require => false
161
- gem "byebug", :require => true
159
+ gem "redis", require: ["redis/connection/hiredis", "redis"]
160
+ gem "webmock", require: false
161
+ gem "byebug", require: true
162
162
  .
163
163
  .fi
164
164
  .
@@ -172,8 +172,8 @@ The argument defaults to the name of the gem\. For example, these are identical:
172
172
  .nf
173
173
 
174
174
  gem "nokogiri"
175
- gem "nokogiri", :require => "nokogiri"
176
- gem "nokogiri", :require => true
175
+ gem "nokogiri", require: "nokogiri"
176
+ gem "nokogiri", require: true
177
177
  .
178
178
  .fi
179
179
  .
@@ -186,8 +186,8 @@ Each \fIgem\fR \fBMAY\fR specify membership in one or more groups\. Any \fIgem\f
186
186
  .
187
187
  .nf
188
188
 
189
- gem "rspec", :group => :test
190
- gem "wirble", :groups => [:development, :test]
189
+ gem "rspec", group: :test
190
+ gem "wirble", groups: [:development, :test]
191
191
  .
192
192
  .fi
193
193
  .
@@ -320,9 +320,9 @@ As with groups, you can specify one or more platforms:
320
320
  .
321
321
  .nf
322
322
 
323
- gem "weakling", :platforms => :jruby
324
- gem "ruby\-debug", :platforms => :mri_18
325
- gem "nokogiri", :platforms => [:mri_18, :jruby]
323
+ gem "weakling", platforms: :jruby
324
+ gem "ruby\-debug", platforms: :mri_18
325
+ gem "nokogiri", platforms: [:mri_18, :jruby]
326
326
  .
327
327
  .fi
328
328
  .
@@ -331,6 +331,30 @@ gem "nokogiri", :platforms => [:mri_18, :jruby]
331
331
  .P
332
332
  All operations involving groups (\fBbundle install\fR \fIbundle\-install\.1\.html\fR, \fBBundler\.setup\fR, \fBBundler\.require\fR) behave exactly the same as if any groups not matching the current platform were explicitly excluded\.
333
333
  .
334
+ .SS "FORCE_RUBY_PLATFORM"
335
+ If you always want the pure ruby variant of a gem to be chosen over platform specific variants, you can use the \fBforce_ruby_platform\fR option:
336
+ .
337
+ .IP "" 4
338
+ .
339
+ .nf
340
+
341
+ gem "ffi", force_ruby_platform: true
342
+ .
343
+ .fi
344
+ .
345
+ .IP "" 0
346
+ .
347
+ .P
348
+ This can be handy (assuming the pure ruby variant works fine) when:
349
+ .
350
+ .IP "\(bu" 4
351
+ You\'re having issues with the platform specific variant\.
352
+ .
353
+ .IP "\(bu" 4
354
+ The platform specific variant does not yet support a newer ruby (and thus has a \fBrequired_ruby_version\fR upper bound), but you still want your Gemfile{\.lock} files to resolve under that ruby\.
355
+ .
356
+ .IP "" 0
357
+ .
334
358
  .SS "SOURCE"
335
359
  You can select an alternate Rubygems repository for a gem using the \':source\' option\.
336
360
  .
@@ -338,7 +362,7 @@ You can select an alternate Rubygems repository for a gem using the \':source\'
338
362
  .
339
363
  .nf
340
364
 
341
- gem "some_internal_gem", :source => "https://gems\.example\.com"
365
+ gem "some_internal_gem", source: "https://gems\.example\.com"
342
366
  .
343
367
  .fi
344
368
  .
@@ -361,15 +385,15 @@ If necessary, you can specify that a gem is located at a particular git reposito
361
385
  .
362
386
  .TP
363
387
  \fBHTTP(S)\fR
364
- gem "rails", :git => "https://github\.com/rails/rails\.git"
388
+ gem "rails", git: "https://github\.com/rails/rails\.git"
365
389
  .
366
390
  .TP
367
391
  \fBSSH\fR
368
- gem "rails", :git => "git@github\.com:rails/rails\.git"
392
+ gem "rails", git: "git@github\.com:rails/rails\.git"
369
393
  .
370
394
  .TP
371
395
  \fBgit\fR
372
- gem "rails", :git => "git://github\.com/rails/rails\.git"
396
+ gem "rails", git: "git://github\.com/rails/rails\.git"
373
397
  .
374
398
  .P
375
399
  If using SSH, the user that you use to run \fBbundle install\fR \fBMUST\fR have the appropriate keys available in their \fB$HOME/\.ssh\fR\.
@@ -393,7 +417,7 @@ If a git repository does have a \fB\.gemspec\fR for the gem you attached it to,
393
417
  .
394
418
  .nf
395
419
 
396
- gem "rails", "2\.3\.8", :git => "https://github\.com/rails/rails\.git"
420
+ gem "rails", "2\.3\.8", git: "https://github\.com/rails/rails\.git"
397
421
  # bundle install will fail, because the \.gemspec in the rails
398
422
  # repository\'s master branch specifies version 3\.0\.0
399
423
  .
@@ -409,20 +433,20 @@ Git repositories support a number of additional options\.
409
433
  .
410
434
  .TP
411
435
  \fBbranch\fR, \fBtag\fR, and \fBref\fR
412
- You \fBMUST\fR only specify at most one of these options\. The default is \fB:branch => "master"\fR\. For example:
436
+ You \fBMUST\fR only specify at most one of these options\. The default is \fBbranch: "master"\fR\. For example:
413
437
  .
414
438
  .IP
415
- gem "rails", :git => "https://github\.com/rails/rails\.git", :branch => "5\-0\-stable"
439
+ gem "rails", git: "https://github\.com/rails/rails\.git", branch: "5\-0\-stable"
416
440
  .
417
441
  .IP
418
- gem "rails", :git => "https://github\.com/rails/rails\.git", :tag => "v5\.0\.0"
442
+ gem "rails", git: "https://github\.com/rails/rails\.git", tag: "v5\.0\.0"
419
443
  .
420
444
  .IP
421
- gem "rails", :git => "https://github\.com/rails/rails\.git", :ref => "4aded"
445
+ gem "rails", git: "https://github\.com/rails/rails\.git", ref: "4aded"
422
446
  .
423
447
  .TP
424
448
  \fBsubmodules\fR
425
- For reference, a git submodule \fIhttps://git\-scm\.com/book/en/v2/Git\-Tools\-Submodules\fR lets you have another git repository within a subfolder of your repository\. Specify \fB:submodules => true\fR to cause bundler to expand any submodules included in the git repository
449
+ For reference, a git submodule \fIhttps://git\-scm\.com/book/en/v2/Git\-Tools\-Submodules\fR lets you have another git repository within a subfolder of your repository\. Specify \fBsubmodules: true\fR to cause bundler to expand any submodules included in the git repository
426
450
  .
427
451
  .P
428
452
  If a git repository contains multiple \fB\.gemspecs\fR, each \fB\.gemspec\fR represents a gem located at the same place in the file system as the \fB\.gemspec\fR\.
@@ -454,7 +478,7 @@ A custom git source can be defined via the \fBgit_source\fR method\. Provide the
454
478
  .nf
455
479
 
456
480
  git_source(:stash){ |repo_name| "https://stash\.corp\.acme\.pl/#{repo_name}\.git" }
457
- gem \'rails\', :stash => \'forks/rails\'
481
+ gem \'rails\', stash: \'forks/rails\'
458
482
  .
459
483
  .fi
460
484
  .
@@ -467,7 +491,7 @@ In addition, if you wish to choose a specific branch:
467
491
  .
468
492
  .nf
469
493
 
470
- gem "rails", :stash => "forks/rails", :branch => "branch_name"
494
+ gem "rails", stash: "forks/rails", branch: "branch_name"
471
495
  .
472
496
  .fi
473
497
  .
@@ -483,8 +507,8 @@ If the git repository you want to use is hosted on GitHub and is public, you can
483
507
  .
484
508
  .nf
485
509
 
486
- gem "rails", :github => "rails/rails"
487
- gem "rails", :github => "rails"
510
+ gem "rails", github: "rails/rails"
511
+ gem "rails", github: "rails"
488
512
  .
489
513
  .fi
490
514
  .
@@ -497,7 +521,7 @@ Are both equivalent to
497
521
  .
498
522
  .nf
499
523
 
500
- gem "rails", :git => "git://github\.com/rails/rails\.git"
524
+ gem "rails", git: "git://github\.com/rails/rails\.git"
501
525
  .
502
526
  .fi
503
527
  .
@@ -513,7 +537,7 @@ You can also directly pass a pull request URL:
513
537
  .
514
538
  .nf
515
539
 
516
- gem "rails", :github => "https://github\.com/rails/rails/pull/43753"
540
+ gem "rails", github: "https://github\.com/rails/rails/pull/43753"
517
541
  .
518
542
  .fi
519
543
  .
@@ -526,7 +550,7 @@ Which is equivalent to:
526
550
  .
527
551
  .nf
528
552
 
529
- gem "rails", :github => "rails/rails", branch: "refs/pull/43753/head"
553
+ gem "rails", github: "rails/rails", branch: "refs/pull/43753/head"
530
554
  .
531
555
  .fi
532
556
  .
@@ -539,7 +563,7 @@ If the git repository you want to use is hosted as a GitHub Gist and is public,
539
563
  .
540
564
  .nf
541
565
 
542
- gem "the_hatch", :gist => "4815162342"
566
+ gem "the_hatch", gist: "4815162342"
543
567
  .
544
568
  .fi
545
569
  .
@@ -552,7 +576,7 @@ Is equivalent to:
552
576
  .
553
577
  .nf
554
578
 
555
- gem "the_hatch", :git => "https://gist\.github\.com/4815162342\.git"
579
+ gem "the_hatch", git: "https://gist\.github\.com/4815162342\.git"
556
580
  .
557
581
  .fi
558
582
  .
@@ -568,8 +592,8 @@ If the git repository you want to use is hosted on Bitbucket and is public, you
568
592
  .
569
593
  .nf
570
594
 
571
- gem "rails", :bitbucket => "rails/rails"
572
- gem "rails", :bitbucket => "rails"
595
+ gem "rails", bitbucket: "rails/rails"
596
+ gem "rails", bitbucket: "rails"
573
597
  .
574
598
  .fi
575
599
  .
@@ -582,7 +606,7 @@ Are both equivalent to
582
606
  .
583
607
  .nf
584
608
 
585
- gem "rails", :git => "https://rails@bitbucket\.org/rails/rails\.git"
609
+ gem "rails", git: "https://rails@bitbucket\.org/rails/rails\.git"
586
610
  .
587
611
  .fi
588
612
  .
@@ -604,7 +628,7 @@ Unlike \fB:git\fR, bundler does not compile C extensions for gems specified as p
604
628
  .
605
629
  .nf
606
630
 
607
- gem "rails", :path => "vendor/rails"
631
+ gem "rails", path: "vendor/rails"
608
632
  .
609
633
  .fi
610
634
  .
@@ -648,7 +672,7 @@ platforms :ruby do
648
672
  gem "sqlite3"
649
673
  end
650
674
 
651
- group :development, :optional => true do
675
+ group :development, optional: true do
652
676
  gem "wirble"
653
677
  gem "faker"
654
678
  end
@@ -688,7 +712,7 @@ The \fB\.gemspec\fR \fIhttp://guides\.rubygems\.org/specification\-reference/\fR
688
712
  If you wish to use Bundler to help install dependencies for a gem while it is being developed, use the \fBgemspec\fR method to pull in the dependencies listed in the \fB\.gemspec\fR file\.
689
713
  .
690
714
  .P
691
- The \fBgemspec\fR method adds any runtime dependencies as gem requirements in the default group\. It also adds development dependencies as gem requirements in the \fBdevelopment\fR group\. Finally, it adds a gem requirement on your project (\fB:path => \'\.\'\fR)\. In conjunction with \fBBundler\.setup\fR, this allows you to require project files in your test code as you would if the project were installed as a gem; you need not manipulate the load path manually or require project files via relative paths\.
715
+ The \fBgemspec\fR method adds any runtime dependencies as gem requirements in the default group\. It also adds development dependencies as gem requirements in the \fBdevelopment\fR group\. Finally, it adds a gem requirement on your project (\fBpath: \'\.\'\fR)\. In conjunction with \fBBundler\.setup\fR, this allows you to require project files in your test code as you would if the project were installed as a gem; you need not manipulate the load path manually or require project files via relative paths\.
692
716
  .
693
717
  .P
694
718
  The \fBgemspec\fR method supports optional \fB:path\fR, \fB:glob\fR, \fB:name\fR, and \fB:development_group\fR options, which control where bundler looks for the \fB\.gemspec\fR, the glob it uses to look for the gemspec (defaults to: "{,\fI,\fR/*}\.gemspec"), what named \fB\.gemspec\fR it uses (if more than one is present), and which group development dependencies are included in\.
@@ -91,13 +91,13 @@ Each application _may_ specify a Ruby engine version. If an engine version is
91
91
  specified, an engine _must_ also be specified. If the engine is "ruby" the
92
92
  engine version specified _must_ match the Ruby version.
93
93
 
94
- ruby "1.8.7", :engine => "jruby", :engine_version => "1.6.7"
94
+ ruby "1.8.7", engine: "jruby", engine_version: "1.6.7"
95
95
 
96
96
  ### PATCHLEVEL
97
97
 
98
98
  Each application _may_ specify a Ruby patchlevel.
99
99
 
100
- ruby "2.0.0", :patchlevel => "247"
100
+ ruby "2.0.0", patchlevel: "247"
101
101
 
102
102
  ## GEMS
103
103
 
@@ -124,23 +124,23 @@ Each _gem_ `MAY` specify files that should be used when autorequiring via
124
124
  you want `required` has the same name as _gem_ or `false` to
125
125
  prevent any file from being autorequired.
126
126
 
127
- gem "redis", :require => ["redis/connection/hiredis", "redis"]
128
- gem "webmock", :require => false
129
- gem "byebug", :require => true
127
+ gem "redis", require: ["redis/connection/hiredis", "redis"]
128
+ gem "webmock", require: false
129
+ gem "byebug", require: true
130
130
 
131
131
  The argument defaults to the name of the gem. For example, these are identical:
132
132
 
133
133
  gem "nokogiri"
134
- gem "nokogiri", :require => "nokogiri"
135
- gem "nokogiri", :require => true
134
+ gem "nokogiri", require: "nokogiri"
135
+ gem "nokogiri", require: true
136
136
 
137
137
  ### GROUPS
138
138
 
139
139
  Each _gem_ `MAY` specify membership in one or more groups. Any _gem_ that does
140
140
  not specify membership in any group is placed in the `default` group.
141
141
 
142
- gem "rspec", :group => :test
143
- gem "wirble", :groups => [:development, :test]
142
+ gem "rspec", group: :test
143
+ gem "wirble", groups: [:development, :test]
144
144
 
145
145
  The Bundler runtime allows its two main methods, `Bundler.setup` and
146
146
  `Bundler.require`, to limit their impact to particular groups.
@@ -223,20 +223,34 @@ The full list of platforms and supported versions includes:
223
223
 
224
224
  As with groups, you can specify one or more platforms:
225
225
 
226
- gem "weakling", :platforms => :jruby
227
- gem "ruby-debug", :platforms => :mri_18
228
- gem "nokogiri", :platforms => [:mri_18, :jruby]
226
+ gem "weakling", platforms: :jruby
227
+ gem "ruby-debug", platforms: :mri_18
228
+ gem "nokogiri", platforms: [:mri_18, :jruby]
229
229
 
230
230
  All operations involving groups ([`bundle install`](bundle-install.1.html), `Bundler.setup`,
231
231
  `Bundler.require`) behave exactly the same as if any groups not
232
232
  matching the current platform were explicitly excluded.
233
233
 
234
+ ### FORCE_RUBY_PLATFORM
235
+
236
+ If you always want the pure ruby variant of a gem to be chosen over platform
237
+ specific variants, you can use the `force_ruby_platform` option:
238
+
239
+ gem "ffi", force_ruby_platform: true
240
+
241
+ This can be handy (assuming the pure ruby variant works fine) when:
242
+
243
+ * You're having issues with the platform specific variant.
244
+ * The platform specific variant does not yet support a newer ruby (and thus has
245
+ a `required_ruby_version` upper bound), but you still want your Gemfile{.lock}
246
+ files to resolve under that ruby.
247
+
234
248
  ### SOURCE
235
249
 
236
250
  You can select an alternate Rubygems repository for a gem using the ':source'
237
251
  option.
238
252
 
239
- gem "some_internal_gem", :source => "https://gems.example.com"
253
+ gem "some_internal_gem", source: "https://gems.example.com"
240
254
 
241
255
  This forces the gem to be loaded from this source and ignores any global sources
242
256
  declared at the top level of the file. If the gem does not exist in this source,
@@ -263,11 +277,11 @@ git repository using the `:git` parameter. The repository can be accessed via
263
277
  several protocols:
264
278
 
265
279
  * `HTTP(S)`:
266
- gem "rails", :git => "https://github.com/rails/rails.git"
280
+ gem "rails", git: "https://github.com/rails/rails.git"
267
281
  * `SSH`:
268
- gem "rails", :git => "git@github.com:rails/rails.git"
282
+ gem "rails", git: "git@github.com:rails/rails.git"
269
283
  * `git`:
270
- gem "rails", :git => "git://github.com/rails/rails.git"
284
+ gem "rails", git: "git://github.com/rails/rails.git"
271
285
 
272
286
  If using SSH, the user that you use to run `bundle install` `MUST` have the
273
287
  appropriate keys available in their `$HOME/.ssh`.
@@ -295,7 +309,7 @@ to, a version specifier, if provided, means that the git repository is
295
309
  only valid if the `.gemspec` specifies a version matching the version
296
310
  specifier. If not, bundler will print a warning.
297
311
 
298
- gem "rails", "2.3.8", :git => "https://github.com/rails/rails.git"
312
+ gem "rails", "2.3.8", git: "https://github.com/rails/rails.git"
299
313
  # bundle install will fail, because the .gemspec in the rails
300
314
  # repository's master branch specifies version 3.0.0
301
315
 
@@ -307,18 +321,18 @@ Git repositories support a number of additional options.
307
321
 
308
322
  * `branch`, `tag`, and `ref`:
309
323
  You `MUST` only specify at most one of these options. The default
310
- is `:branch => "master"`. For example:
324
+ is `branch: "master"`. For example:
311
325
 
312
- gem "rails", :git => "https://github.com/rails/rails.git", :branch => "5-0-stable"
326
+ gem "rails", git: "https://github.com/rails/rails.git", branch: "5-0-stable"
313
327
 
314
- gem "rails", :git => "https://github.com/rails/rails.git", :tag => "v5.0.0"
328
+ gem "rails", git: "https://github.com/rails/rails.git", tag: "v5.0.0"
315
329
 
316
- gem "rails", :git => "https://github.com/rails/rails.git", :ref => "4aded"
330
+ gem "rails", git: "https://github.com/rails/rails.git", ref: "4aded"
317
331
 
318
332
  * `submodules`:
319
333
  For reference, a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
320
334
  lets you have another git repository within a subfolder of your repository.
321
- Specify `:submodules => true` to cause bundler to expand any
335
+ Specify `submodules: true` to cause bundler to expand any
322
336
  submodules included in the git repository
323
337
 
324
338
  If a git repository contains multiple `.gemspecs`, each `.gemspec`
@@ -346,11 +360,11 @@ as an argument, and a block which receives a single argument and interpolates it
346
360
  string to return the full repo address:
347
361
 
348
362
  git_source(:stash){ |repo_name| "https://stash.corp.acme.pl/#{repo_name}.git" }
349
- gem 'rails', :stash => 'forks/rails'
363
+ gem 'rails', stash: 'forks/rails'
350
364
 
351
365
  In addition, if you wish to choose a specific branch:
352
366
 
353
- gem "rails", :stash => "forks/rails", :branch => "branch_name"
367
+ gem "rails", stash: "forks/rails", branch: "branch_name"
354
368
 
355
369
  ### GITHUB
356
370
 
@@ -363,33 +377,33 @@ If the git repository you want to use is hosted on GitHub and is public, you can
363
377
  trailing ".git"), separated by a slash. If both the username and repository name are the
364
378
  same, you can omit one.
365
379
 
366
- gem "rails", :github => "rails/rails"
367
- gem "rails", :github => "rails"
380
+ gem "rails", github: "rails/rails"
381
+ gem "rails", github: "rails"
368
382
 
369
383
  Are both equivalent to
370
384
 
371
- gem "rails", :git => "git://github.com/rails/rails.git"
385
+ gem "rails", git: "git://github.com/rails/rails.git"
372
386
 
373
387
  Since the `github` method is a specialization of `git_source`, it accepts a `:branch` named argument.
374
388
 
375
389
  You can also directly pass a pull request URL:
376
390
 
377
- gem "rails", :github => "https://github.com/rails/rails/pull/43753"
391
+ gem "rails", github: "https://github.com/rails/rails/pull/43753"
378
392
 
379
393
  Which is equivalent to:
380
394
 
381
- gem "rails", :github => "rails/rails", branch: "refs/pull/43753/head"
395
+ gem "rails", github: "rails/rails", branch: "refs/pull/43753/head"
382
396
 
383
397
  ### GIST
384
398
 
385
399
  If the git repository you want to use is hosted as a GitHub Gist and is public, you can use
386
400
  the :gist shorthand to specify the gist identifier (without the trailing ".git").
387
401
 
388
- gem "the_hatch", :gist => "4815162342"
402
+ gem "the_hatch", gist: "4815162342"
389
403
 
390
404
  Is equivalent to:
391
405
 
392
- gem "the_hatch", :git => "https://gist.github.com/4815162342.git"
406
+ gem "the_hatch", git: "https://gist.github.com/4815162342.git"
393
407
 
394
408
  Since the `gist` method is a specialization of `git_source`, it accepts a `:branch` named argument.
395
409
 
@@ -400,12 +414,12 @@ If the git repository you want to use is hosted on Bitbucket and is public, you
400
414
  trailing ".git"), separated by a slash. If both the username and repository name are the
401
415
  same, you can omit one.
402
416
 
403
- gem "rails", :bitbucket => "rails/rails"
404
- gem "rails", :bitbucket => "rails"
417
+ gem "rails", bitbucket: "rails/rails"
418
+ gem "rails", bitbucket: "rails"
405
419
 
406
420
  Are both equivalent to
407
421
 
408
- gem "rails", :git => "https://rails@bitbucket.org/rails/rails.git"
422
+ gem "rails", git: "https://rails@bitbucket.org/rails/rails.git"
409
423
 
410
424
  Since the `bitbucket` method is a specialization of `git_source`, it accepts a `:branch` named argument.
411
425
 
@@ -423,7 +437,7 @@ version that bundler should use.
423
437
  Unlike `:git`, bundler does not compile C extensions for
424
438
  gems specified as paths.
425
439
 
426
- gem "rails", :path => "vendor/rails"
440
+ gem "rails", path: "vendor/rails"
427
441
 
428
442
  If you would like to use multiple local gems directly from the filesystem, you can set a global `path` option to the path containing the gem's files. This will automatically load gemspec files from subdirectories.
429
443
 
@@ -452,7 +466,7 @@ applied to a group of gems by using block form.
452
466
  gem "sqlite3"
453
467
  end
454
468
 
455
- group :development, :optional => true do
469
+ group :development, optional: true do
456
470
  gem "wirble"
457
471
  gem "faker"
458
472
  end
@@ -495,8 +509,8 @@ the `.gemspec` file.
495
509
 
496
510
  The `gemspec` method adds any runtime dependencies as gem requirements in the
497
511
  default group. It also adds development dependencies as gem requirements in the
498
- `development` group. Finally, it adds a gem requirement on your project (`:path
499
- => '.'`). In conjunction with `Bundler.setup`, this allows you to require project
512
+ `development` group. Finally, it adds a gem requirement on your project (`path:
513
+ '.'`). In conjunction with `Bundler.setup`, this allows you to require project
500
514
  files in your test code as you would if the project were installed as a gem; you
501
515
  need not manipulate the load path manually or require project files via relative
502
516
  paths.
@@ -4,7 +4,7 @@ module Bundler
4
4
  class Resolver
5
5
  class SpecGroup
6
6
  attr_accessor :name, :version, :source
7
- attr_accessor :activated_platforms
7
+ attr_accessor :activated_platforms, :force_ruby_platform
8
8
 
9
9
  def self.create_for(specs, all_platforms, specific_platform)
10
10
  specific_platform_specs = specs[specific_platform]
@@ -35,6 +35,7 @@ module Bundler
35
35
 
36
36
  specs.map do |s|
37
37
  lazy_spec = LazySpecification.new(name, version, s.platform, source)
38
+ lazy_spec.force_ruby_platform = force_ruby_platform
38
39
  lazy_spec.dependencies.replace s.dependencies
39
40
  lazy_spec
40
41
  end
@@ -88,7 +89,7 @@ module Bundler
88
89
  dependencies = []
89
90
  @specs[platform].first.dependencies.each do |dep|
90
91
  next if dep.type == :development
91
- dependencies << DepProxy.get_proxy(dep, platform)
92
+ dependencies << DepProxy.get_proxy(Dependency.new(dep.name, dep.requirement), platform)
92
93
  end
93
94
  dependencies
94
95
  end
@@ -98,10 +99,10 @@ module Bundler
98
99
  return [] if spec.is_a?(LazySpecification)
99
100
  dependencies = []
100
101
  unless spec.required_ruby_version.none?
101
- dependencies << DepProxy.get_proxy(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform)
102
+ dependencies << DepProxy.get_proxy(Dependency.new("Ruby\0", spec.required_ruby_version), platform)
102
103
  end
103
104
  unless spec.required_rubygems_version.none?
104
- dependencies << DepProxy.get_proxy(Gem::Dependency.new("RubyGems\0", spec.required_rubygems_version), platform)
105
+ dependencies << DepProxy.get_proxy(Dependency.new("RubyGems\0", spec.required_rubygems_version), platform)
105
106
  end
106
107
  dependencies
107
108
  end
@@ -143,9 +143,12 @@ module Bundler
143
143
  end
144
144
 
145
145
  spec_group_ruby = SpecGroup.create_for(specs_by_platform, [Gem::Platform::RUBY], Gem::Platform::RUBY)
146
- groups << spec_group_ruby if spec_group_ruby
146
+ if spec_group_ruby
147
+ spec_group_ruby.force_ruby_platform = dependency.force_ruby_platform
148
+ groups << spec_group_ruby
149
+ end
147
150
 
148
- next groups if @resolving_only_for_ruby
151
+ next groups if @resolving_only_for_ruby || dependency.force_ruby_platform
149
152
 
150
153
  spec_group = SpecGroup.create_for(specs_by_platform, @platforms, platform)
151
154
  groups << spec_group
@@ -125,7 +125,6 @@ module Bundler
125
125
  specs_to_cache.each do |spec|
126
126
  next if spec.name == "bundler"
127
127
  next if spec.source.is_a?(Source::Gemspec)
128
- spec.source.send(:fetch_gem, spec) if Bundler.settings[:cache_all_platforms] && spec.source.respond_to?(:fetch_gem, true)
129
128
  spec.source.cache(spec, custom_path) if spec.source.respond_to?(:cache)
130
129
  end
131
130
 
@@ -153,13 +153,11 @@ module Bundler
153
153
  # Check for this spec from other sources
154
154
  uris = [spec.remote, *remotes_for_spec(spec)].map(&:anonymized_uri).uniq
155
155
  Installer.ambiguous_gems << [spec.name, *uris] if uris.length > 1
156
-
157
- path = fetch_gem(spec, options[:previous_spec])
158
- else
159
- path = cached_gem(spec)
160
- raise GemNotFound, "Could not find #{spec.file_name} for installation" unless path
161
156
  end
162
157
 
158
+ path = fetch_gem_if_possible(spec, options[:previous_spec])
159
+ raise GemNotFound, "Could not find #{spec.file_name} for installation" unless path
160
+
163
161
  return if Bundler.settings[:no_install]
164
162
 
165
163
  if requires_sudo?
@@ -242,7 +240,7 @@ module Bundler
242
240
  end
243
241
 
244
242
  def cache(spec, custom_path = nil)
245
- cached_path = cached_gem(spec)
243
+ cached_path = Bundler.settings[:cache_all_platforms] ? fetch_gem_if_possible(spec) : cached_gem(spec)
246
244
  raise GemNotFound, "Missing gem file '#{spec.file_name}'." unless cached_path
247
245
  return if File.dirname(cached_path) == Bundler.app_cache.to_s
248
246
  Bundler.ui.info " * #{File.basename(cached_path)}"
@@ -462,6 +460,14 @@ module Bundler
462
460
  end
463
461
  end
464
462
 
463
+ def fetch_gem_if_possible(spec, previous_spec = nil)
464
+ if spec.remote
465
+ fetch_gem(spec, previous_spec)
466
+ else
467
+ cached_gem(spec)
468
+ end
469
+ end
470
+
465
471
  def fetch_gem(spec, previous_spec = nil)
466
472
  spec.fetch_platform
467
473
 
@@ -30,7 +30,7 @@ module Bundler
30
30
 
31
31
  specs_for_dep.first.dependencies.each do |d|
32
32
  next if d.type == :development
33
- d = DepProxy.get_proxy(d, dep.__platform) unless match_current_platform
33
+ d = DepProxy.get_proxy(Dependency.new(d.name, d.requirement), dep.__platform) unless match_current_platform
34
34
  deps << d
35
35
  end
36
36
  elsif check
@@ -178,7 +178,7 @@ module Bundler
178
178
  if match_current_platform
179
179
  GemHelpers.select_best_platform_match(specs_for_name.select {|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
180
180
  else
181
- specs_for_name_and_platform = GemHelpers.select_best_platform_match(specs_for_name, dep.__platform)
181
+ specs_for_name_and_platform = GemHelpers.select_best_platform_match(specs_for_name, dep.force_ruby_platform ? Gem::Platform::RUBY : dep.__platform)
182
182
  specs_for_name_and_platform.any? ? specs_for_name_and_platform : specs_for_name
183
183
  end
184
184
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.17".freeze
4
+ VERSION = "2.3.18".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.17
4
+ version: 2.3.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -22,7 +22,7 @@ authors:
22
22
  autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2022-06-29 00:00:00.000000000 Z
25
+ date: 2022-07-14 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -369,7 +369,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
369
369
  - !ruby/object:Gem::Version
370
370
  version: 2.5.2
371
371
  requirements: []
372
- rubygems_version: 3.3.17
372
+ rubygems_version: 3.3.18
373
373
  signing_key:
374
374
  specification_version: 4
375
375
  summary: The best way to manage your application's dependencies