rubygems-update 2.6.7 → 2.6.8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +11 -0
  3. data/Manifest.txt +10 -5
  4. data/bundler/CHANGELOG.md +108 -0
  5. data/bundler/DEVELOPMENT.md +6 -4
  6. data/bundler/ISSUES.md +17 -0
  7. data/bundler/README.md +2 -0
  8. data/bundler/exe/bundle +4 -6
  9. data/bundler/exe/bundle_ruby +2 -4
  10. data/bundler/exe/bundler +1 -19
  11. data/bundler/lib/bundler.rb +114 -44
  12. data/bundler/lib/bundler/cli.rb +90 -17
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -3
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/clean.rb +1 -1
  17. data/bundler/lib/bundler/cli/common.rb +13 -0
  18. data/bundler/lib/bundler/cli/console.rb +3 -0
  19. data/bundler/lib/bundler/cli/doctor.rb +93 -0
  20. data/bundler/lib/bundler/cli/exec.rb +18 -2
  21. data/bundler/lib/bundler/cli/gem.rb +3 -2
  22. data/bundler/lib/bundler/cli/inject.rb +25 -7
  23. data/bundler/lib/bundler/cli/install.rb +25 -7
  24. data/bundler/lib/bundler/cli/lock.rb +20 -7
  25. data/bundler/lib/bundler/cli/outdated.rb +97 -38
  26. data/bundler/lib/bundler/cli/platform.rb +1 -1
  27. data/bundler/lib/bundler/cli/show.rb +1 -1
  28. data/bundler/lib/bundler/cli/update.rb +9 -6
  29. data/bundler/lib/bundler/compact_index_client.rb +102 -0
  30. data/bundler/lib/bundler/compact_index_client/cache.rb +119 -0
  31. data/bundler/lib/bundler/compact_index_client/updater.rb +88 -0
  32. data/bundler/lib/bundler/current_ruby.rb +3 -3
  33. data/bundler/lib/bundler/definition.rb +210 -46
  34. data/bundler/lib/bundler/dependency.rb +1 -1
  35. data/bundler/lib/bundler/deployment.rb +6 -0
  36. data/bundler/lib/bundler/deprecate.rb +16 -0
  37. data/bundler/lib/bundler/dsl.rb +70 -24
  38. data/bundler/lib/bundler/endpoint_specification.rb +2 -0
  39. data/bundler/lib/bundler/env.rb +5 -1
  40. data/bundler/lib/bundler/environment_preserver.rb +1 -1
  41. data/bundler/lib/bundler/errors.rb +12 -1
  42. data/bundler/lib/bundler/feature_flag.rb +32 -0
  43. data/bundler/lib/bundler/fetcher.rb +3 -2
  44. data/bundler/lib/bundler/fetcher/base.rb +10 -0
  45. data/bundler/lib/bundler/fetcher/compact_index.rb +33 -12
  46. data/bundler/lib/bundler/fetcher/dependency.rb +2 -13
  47. data/bundler/lib/bundler/fetcher/downloader.rb +12 -1
  48. data/bundler/lib/bundler/friendly_errors.rb +9 -2
  49. data/bundler/lib/bundler/gem_helper.rb +3 -3
  50. data/bundler/lib/bundler/gem_helpers.rb +69 -1
  51. data/bundler/lib/bundler/gem_version_promoter.rb +175 -0
  52. data/bundler/lib/bundler/gemdeps.rb +28 -0
  53. data/bundler/lib/bundler/graph.rb +4 -25
  54. data/bundler/lib/bundler/index.rb +11 -2
  55. data/bundler/lib/bundler/injector.rb +12 -5
  56. data/bundler/lib/bundler/inline.rb +4 -4
  57. data/bundler/lib/bundler/installer.rb +25 -9
  58. data/bundler/lib/bundler/installer/gem_installer.rb +13 -15
  59. data/bundler/lib/bundler/installer/parallel_installer.rb +121 -99
  60. data/bundler/lib/bundler/lazy_specification.rb +28 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +27 -17
  62. data/bundler/lib/bundler/match_platform.rb +2 -1
  63. data/bundler/lib/bundler/mirror.rb +2 -2
  64. data/bundler/lib/bundler/plugin.rb +156 -32
  65. data/bundler/lib/bundler/plugin/api.rb +29 -5
  66. data/bundler/lib/bundler/plugin/api/source.rb +293 -0
  67. data/bundler/lib/bundler/plugin/dsl.rb +25 -1
  68. data/bundler/lib/bundler/plugin/index.rb +80 -13
  69. data/bundler/lib/bundler/plugin/installer.rb +6 -10
  70. data/bundler/lib/bundler/plugin/source_list.rb +4 -0
  71. data/bundler/lib/bundler/postit_trampoline.rb +56 -40
  72. data/bundler/lib/bundler/remote_specification.rb +5 -0
  73. data/bundler/lib/bundler/resolver.rb +64 -47
  74. data/bundler/lib/bundler/retry.rb +2 -1
  75. data/bundler/lib/bundler/ruby_version.rb +11 -4
  76. data/bundler/lib/bundler/rubygems_ext.rb +25 -3
  77. data/bundler/lib/bundler/rubygems_gem_installer.rb +54 -0
  78. data/bundler/lib/bundler/rubygems_integration.rb +148 -70
  79. data/bundler/lib/bundler/runtime.rb +27 -3
  80. data/bundler/lib/bundler/settings.rb +80 -17
  81. data/bundler/lib/bundler/setup.rb +7 -4
  82. data/bundler/lib/bundler/shared_helpers.rb +45 -8
  83. data/bundler/lib/bundler/source.rb +2 -1
  84. data/bundler/lib/bundler/source/gemspec.rb +4 -0
  85. data/bundler/lib/bundler/source/git.rb +9 -6
  86. data/bundler/lib/bundler/source/git/git_proxy.rb +37 -4
  87. data/bundler/lib/bundler/source/path.rb +10 -27
  88. data/bundler/lib/bundler/source/path/installer.rb +39 -11
  89. data/bundler/lib/bundler/source/rubygems.rb +3 -2
  90. data/bundler/lib/bundler/source_list.rb +28 -8
  91. data/bundler/lib/bundler/spec_set.rb +30 -15
  92. data/bundler/lib/bundler/templates/Executable.standalone +4 -2
  93. data/bundler/lib/bundler/templates/Gemfile +0 -1
  94. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  95. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -1
  96. data/bundler/lib/bundler/ui/shell.rb +25 -9
  97. data/bundler/lib/bundler/ui/silent.rb +10 -0
  98. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  99. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +8 -2
  100. data/bundler/lib/bundler/vendor/postit/lib/postit.rb +5 -5
  101. data/bundler/lib/bundler/vendor/postit/lib/postit/environment.rb +3 -3
  102. data/bundler/lib/bundler/vendor/postit/lib/postit/installer.rb +1 -1
  103. data/bundler/lib/bundler/vendor/postit/lib/postit/parser.rb +1 -1
  104. data/bundler/lib/bundler/vendor/postit/lib/postit/setup.rb +4 -4
  105. data/bundler/lib/bundler/vendor/postit/lib/postit/version.rb +2 -2
  106. data/bundler/lib/bundler/version.rb +1 -1
  107. data/bundler/lib/bundler/yaml_serializer.rb +34 -11
  108. data/bundler/man/bundle-binstubs.ronn +29 -0
  109. data/bundler/man/bundle-config.ronn +33 -1
  110. data/bundler/man/bundle-exec.ronn +9 -0
  111. data/bundler/man/bundle-install.ronn +6 -41
  112. data/bundler/man/bundle-package.ronn +1 -1
  113. data/bundler/man/bundle.ronn +9 -8
  114. data/bundler/man/gemfile.5.ronn +1 -1
  115. data/lib/rubygems.rb +1 -1
  116. data/lib/rubygems/dependency.rb +7 -4
  117. data/lib/rubygems/request.rb +46 -0
  118. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +7 -0
  119. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
  120. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -2
  121. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -2
  122. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +62 -0
  123. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  124. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +12 -1
  125. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -2
  126. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  127. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  128. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +11 -3
  129. data/test/rubygems/test_gem_request.rb +132 -0
  130. data/test/rubygems/test_gem_specification.rb +7 -0
  131. metadata +34 -29
  132. data/bundler/lib/bundler/environment.rb +0 -42
  133. data/bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +0 -79
  134. data/bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb +0 -98
  135. data/bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb +0 -80
  136. data/bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f8ebff1d7a817d5be825280b5c587a09bc84ea5
4
- data.tar.gz: 8dfc361737e408f6291f7d670b1e9a7b6b9900f3
3
+ metadata.gz: a8082ce6742459dfd41daaa9e9db86de202e0d00
4
+ data.tar.gz: 624be9cee606a2b69eecf9cbdcb1bb4daab38570
5
5
  SHA512:
6
- metadata.gz: 76309ac79a71bc0d35a962741ebd39aec07c33d37eae5e5593cedc0d645970a0f26bc8a4f868897ed5d5f06d8ecc3a830b1694d8a3a9ee5df2ead8c934c14164
7
- data.tar.gz: 3b4b9d5aaeedfc0c58b7e1418ddef65402044f0bf1cb948d5028ad8c70dccc10ac6c2e652670d24b577136ac8684cd2b744f4ffca0af0b6f6a19da590c6b343f
6
+ metadata.gz: 77e2d16b0f65465870f2299c00df2386c9e4a3b46a86a9d4abefb4ad574f7c4055226bbfed856866d97d1f128faff5c4ae4133a01f3ae63e359823497fed303d
7
+ data.tar.gz: 2ce00b6e68e28a69cfa1aa688787dc695cdd6d6504570a241a1b13f49a0a48ebfe85dafdd6cea49231a73431239df8be0e6666f77a9b4747495391d34274987f
@@ -1,5 +1,16 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 2.6.8 / 2016-10-29
4
+
5
+ Bug fixes:
6
+
7
+ * Improve SSL verification failure message. Pull request #1751
8
+ by Eric Hodel.
9
+ * Ensure `to_spec` falls back on prerelease specs. Pull request
10
+ #1755 by André Arko.
11
+ * Update vendored Molinillo to 0.5.3. Pull request #1763 by
12
+ Samuel Giddins.
13
+
3
14
  === 2.6.7 / 2016-09-26
4
15
 
5
16
  Bug fixes:
@@ -38,6 +38,7 @@ bundler/lib/bundler/cli/clean.rb
38
38
  bundler/lib/bundler/cli/common.rb
39
39
  bundler/lib/bundler/cli/config.rb
40
40
  bundler/lib/bundler/cli/console.rb
41
+ bundler/lib/bundler/cli/doctor.rb
41
42
  bundler/lib/bundler/cli/exec.rb
42
43
  bundler/lib/bundler/cli/gem.rb
43
44
  bundler/lib/bundler/cli/init.rb
@@ -52,6 +53,9 @@ bundler/lib/bundler/cli/plugin.rb
52
53
  bundler/lib/bundler/cli/show.rb
53
54
  bundler/lib/bundler/cli/update.rb
54
55
  bundler/lib/bundler/cli/viz.rb
56
+ bundler/lib/bundler/compact_index_client.rb
57
+ bundler/lib/bundler/compact_index_client/cache.rb
58
+ bundler/lib/bundler/compact_index_client/updater.rb
55
59
  bundler/lib/bundler/constants.rb
56
60
  bundler/lib/bundler/current_ruby.rb
57
61
  bundler/lib/bundler/definition.rb
@@ -62,9 +66,9 @@ bundler/lib/bundler/deprecate.rb
62
66
  bundler/lib/bundler/dsl.rb
63
67
  bundler/lib/bundler/endpoint_specification.rb
64
68
  bundler/lib/bundler/env.rb
65
- bundler/lib/bundler/environment.rb
66
69
  bundler/lib/bundler/environment_preserver.rb
67
70
  bundler/lib/bundler/errors.rb
71
+ bundler/lib/bundler/feature_flag.rb
68
72
  bundler/lib/bundler/fetcher.rb
69
73
  bundler/lib/bundler/fetcher/base.rb
70
74
  bundler/lib/bundler/fetcher/compact_index.rb
@@ -76,6 +80,8 @@ bundler/lib/bundler/gem_helper.rb
76
80
  bundler/lib/bundler/gem_helpers.rb
77
81
  bundler/lib/bundler/gem_remote_fetcher.rb
78
82
  bundler/lib/bundler/gem_tasks.rb
83
+ bundler/lib/bundler/gem_version_promoter.rb
84
+ bundler/lib/bundler/gemdeps.rb
79
85
  bundler/lib/bundler/graph.rb
80
86
  bundler/lib/bundler/index.rb
81
87
  bundler/lib/bundler/injector.rb
@@ -90,6 +96,7 @@ bundler/lib/bundler/match_platform.rb
90
96
  bundler/lib/bundler/mirror.rb
91
97
  bundler/lib/bundler/plugin.rb
92
98
  bundler/lib/bundler/plugin/api.rb
99
+ bundler/lib/bundler/plugin/api/source.rb
93
100
  bundler/lib/bundler/plugin/dsl.rb
94
101
  bundler/lib/bundler/plugin/index.rb
95
102
  bundler/lib/bundler/plugin/installer.rb
@@ -156,10 +163,6 @@ bundler/lib/bundler/ui/rg_proxy.rb
156
163
  bundler/lib/bundler/ui/shell.rb
157
164
  bundler/lib/bundler/ui/silent.rb
158
165
  bundler/lib/bundler/uri_credentials_filter.rb
159
- bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb
160
- bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb
161
- bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb
162
- bundler/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb
163
166
  bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb
164
167
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
165
168
  bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
@@ -227,6 +230,7 @@ bundler/lib/bundler/version.rb
227
230
  bundler/lib/bundler/vlad.rb
228
231
  bundler/lib/bundler/worker.rb
229
232
  bundler/lib/bundler/yaml_serializer.rb
233
+ bundler/man/bundle-binstubs.ronn
230
234
  bundler/man/bundle-config.ronn
231
235
  bundler/man/bundle-exec.ronn
232
236
  bundler/man/bundle-gem.ronn
@@ -360,6 +364,7 @@ lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb
360
364
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb
361
365
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
362
366
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
367
+ lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
363
368
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
364
369
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb
365
370
  lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb
@@ -1,3 +1,106 @@
1
+ ## 1.13.6 (2016-10-22)
2
+
3
+ Bugfixes:
4
+
5
+ - make the `gem` method public again, fixing a regression in 1.13.4 (#5102, @segiddins)
6
+
7
+ ## 1.13.5 (2016-10-15)
8
+
9
+ Bugfixes:
10
+
11
+ - Ensure a locked pre-release spec can always be re-resolved (#5089, @segiddins)
12
+
13
+ ## 1.13.4 (2016-10-11)
14
+
15
+ Bugfixes:
16
+
17
+ - stop printing warning when compact index versions file is rewritten (#5064, @indirect)
18
+ - fix `parent directory is world writable but not sticky` error on install (#5043, @indirect)
19
+ - fix for `uninitialized constant Bundler::Plugin::API::Source` error (#5010, @hsbt, @aycabta)
20
+ - make `update` options for major, minor, and patch updates consistent (#4934, @chrismo)
21
+
22
+ ## 1.13.3 (2016-10-10)
23
+
24
+ Bugfixes:
25
+
26
+ - add support for weak etags to the new index (@segiddins)
27
+
28
+ ## 1.13.2 (2016-09-30)
29
+
30
+ Bugfixes:
31
+
32
+ - allow `Settings` to be initialized without a root directory (@m1k3)
33
+ - allow specifying ruby engines in the gemfile as a symbol (#4919, @JuanitoFatas)
34
+ - avoid an execption when using `bundler/deployment` with Vlad (@srbaker)
35
+ - ensure redefined methods have the same visibility as the one they're replacing, fixing `Kernel.require` failing on JRuby (#4975, @segiddins)
36
+ - ensure that Bundler won't complain about a corrupt lockfile when no lockfile exists when using `gemspec` in the Gemfile (#5006, @segiddins)
37
+ - fail gracefully when parsing the metadata for a gemspec from the compact index fails (@segiddins)
38
+ - fix system gems not being copied to --path on bundle install (e.g. --deployment) (#4974, @chrismo)
39
+
40
+ Performance:
41
+
42
+ - avoid parsing the lockfile twice when evaluating gemfiles (@segiddins)
43
+
44
+ ## 1.13.1 (2016-09-13)
45
+
46
+ Bugfixes:
47
+
48
+ - ensure that `Gem::Source` is available, fixing several exceptions (#4944, @dekellum)
49
+ - ensure that dependency resolution works when multiple gems have the same dependency (#4961, @segiddins)
50
+
51
+ ## 1.13.0 (2016-09-05)
52
+
53
+ This space deliberately left blank.
54
+
55
+ ## 1.13.0.rc.2 (2016-08-21)
56
+
57
+ Features:
58
+
59
+ - add setting `exec_disable_load` to force `exec` to spawn a new Ruby process (@segiddins)
60
+ - add `doctor` command to help with issues like unlinked compiled gems (#4765, @mistydemeo)
61
+ - rework the `update` command, providing fine-grained control via flags (#4676, @chrismo)
62
+ - add URI to http response output in debug mode (#4808, @NickLaMuro)
63
+ - add manpage for `binstubs` command (#4847, @Zorbash)
64
+ - support `mirror` settings for sources by hostname, not only full URL (@opiethehokie)
65
+ - print gem installation errors after other install output (#4834, @segiddins)
66
+ - add `lock --remove-platform` flag to remove platforms from the lock (#4877, @segiddins)
67
+ - add `only_update_to_newer_versions` setting to prevent downgrades during `update` (@segiddins)
68
+ - expanded experimental plugin support to include hooks and sources (@asutoshpalai)
69
+
70
+ Bugfixes:
71
+
72
+ - retry gem downloads (#4846, @jkeiser)
73
+ - improve the CompactIndex to handle capitalized legacy gems (#4867, @segiddins)
74
+ - re-use persistent HTTP connections for CompactIndex (@NickLaMuro)
75
+ - respect `required_ruby_version` when Gemfile contains `ruby` version (@indirect)
76
+ - allow `rake release` to sign git tags (#4743, @eagletmt)
77
+ - set process titles when using `#load` during `exec` (@yob)
78
+ - recognize JRuby shebangs for using `#load` during `exec` (@ojab)
79
+ - handle world-writable home directories (#4726, @allenzhao)
80
+ - support multi-platform gems via the `gemspec` Gemfile method (#4798, @segiddins)
81
+ - print dots correctly for CompactIndex fetcher (@NickLaMuro)
82
+ - set an `open_timeout` when requesting gem data via HTTP (@NickLaMuro)
83
+ - rename the BUNDLE\_ORIG\_ENV variable so it no longer shows up in `config` (@indirect)
84
+ - show help only when `-h` or `--help` is passed to Bundler, not to `exec` (#4801, @segiddins)
85
+ - handle symlinks to binstubs created by `--standalone` (#4782, @terinjokes)
86
+
87
+ ## 1.13.0.rc.1 (2016-06-27)
88
+
89
+ Features:
90
+
91
+ - when `bundle config major_deprecations` or `BUNDLE_MAJOR_DEPRECATIONS` is set, deprecation warnings for bundler 2 will be printed (@segiddins)
92
+ - when running with `--verbose`, bundler will print the reason it is re-resolving a gemfile (@segiddins)
93
+
94
+ Bugfixes:
95
+
96
+ - fix support for running RubyGems 1.x on Ruby 2.3 (#4698, @segiddins)
97
+ - fix bundle exec'ing to a ruby file when gems are installed into a path (#4592, @chrismo)
98
+ - when multiple specs in a bundle have the same executable, prefer activating the one from the requested gem (#4705, @segiddins)
99
+ - stop changing the load path to require the vendored postit when trampolining (@segiddins)
100
+ - ensure relative paths are properly printed after completing an installation (@jenseng)
101
+ - fix re-resolving when there are multiple unchanged path sources (@segiddins)
102
+ - de-init submodules when running git 2.9 and requesting a git gem without submodules (@segiddins)
103
+
1
104
  ## 1.13.0.pre.1 (2016-06-20)
2
105
 
3
106
  Performance:
@@ -40,6 +143,11 @@ Bugfixes:
40
143
  - allow running `bundle install --deployment` after `bundle package --all` with path gems (#2175, @allenzhao)
41
144
  - add support for patchlevels in ruby versions in the gemfile and gemspecs (#4593, @chalkos)
42
145
 
146
+ ## 1.12.6 (2016-10-10)
147
+
148
+ Bugfixes:
149
+ - add support for weak etags to the new index (@segiddins)
150
+
43
151
  ## 1.12.5 (2016-05-25)
44
152
 
45
153
  Bugfixes:
@@ -12,7 +12,7 @@ If you have any questions after reading this page, please feel free to contact e
12
12
 
13
13
  ## How you can help
14
14
 
15
- We track [small bugs and features](https://github.com/bundler/bundler/issues?labels=small) so that anyone who wants to help can start with something that's not too overwhelming. We also keep a [list of things anyone can help with, any time](https://github.com/bundler/bundler/blob/master/CONTRIBUTING.md#contributing). If nothing on those lists looks good, talk to us, and we'll figure out what you can help with. We can absolutely use your help, no matter what level of programming skill you have at the moment.
15
+ We track [small bugs and features](https://github.com/bundler/bundler/labels/contribution%3A%20small) so that anyone who wants to help can start with something that's not too overwhelming. We also keep a [list of things anyone can help with, any time](https://github.com/bundler/bundler/blob/master/CONTRIBUTING.md#contributing). If nothing on those lists looks good, talk to us, and we'll figure out what you can help with. We can absolutely use your help, no matter what level of programming skill you have at the moment.
16
16
 
17
17
  # Development setup
18
18
 
@@ -36,9 +36,11 @@ Bundler doesn't use a Gemfile to list development dependencies, because when we
36
36
 
37
37
  4. Set up a shell alias to run Bundler from your clone, e.g. a Bash alias:
38
38
 
39
- $ alias dbundle='ruby -I /path/to/bundler/lib /path/to/bundler/exe/bundle'
39
+ $ alias dbundle='BUNDLE_DISABLE_POSTIT=1 ruby -I /path/to/bundler/lib /path/to/bundler/exe/bundle'
40
40
 
41
- With that set up, you can test changes you've made to Bundler by running `dbundle`, without interfering with the regular `bundle` command.
41
+ The `BUNDLE_DISABLE_POSTIT` environment variable ensures that the version of Bundler in `/path/to/bundler/lib` will be used. Without that environment setting, Bundler will automatically download, install, and run the version of Bundler listed in `Gemfile.lock`. With that set up, you can test changes you've made to Bundler by running `dbundle`, without interfering with the regular `bundle` command.
42
+
43
+ To dive into the code with Pry: `RUBYOPT=-rpry dbundle` to require pry and then run commands.
42
44
 
43
45
  # Submitting Pull Requests
44
46
 
@@ -102,7 +104,7 @@ Finally, the ticket may be a duplicate of another older ticket. If you notice a
102
104
 
103
105
  If you would like to add a new feature to Bundler, please follow these steps:
104
106
 
105
- 1. [Create an issue](https://github.com/bundler/bundler/issues/new) with the [`feature-request` label](https://github.com/bundler/bundler/labels/feature-request) to discuss your feature.
107
+ 1. [Create an issue](https://github.com/bundler/bundler/issues/new) with the [`feature-request` label](https://github.com/bundler/bundler/labels/type:%20feature-request) to discuss your feature.
106
108
  2. Base your commits on the master branch, since we follow [SemVer](http://semver.org) and don't add new features to old releases.
107
109
  3. Commit the code and at least one test covering your changes to a feature branch in your fork.
108
110
  4. Send us a [pull request](https://help.github.com/articles/using-pull-requests) from your feature branch.
@@ -10,6 +10,23 @@ Detailed information about each Bundler command, including help with common prob
10
10
 
11
11
  ## Troubleshooting
12
12
 
13
+ ### Permission denied when installing bundler
14
+
15
+ Certain operating systems such as MacOS and Ubuntu have versions of Ruby that require evelated privileges to install gems.
16
+
17
+ ERROR: While executing gem ... (Gem::FilePermissionError)
18
+ You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
19
+
20
+ There are multiple ways to solve this issue. You can install bundler with elevated privilges using `sudo` or `su`.
21
+
22
+ sudo gem install bundler
23
+
24
+ If you cannot elevated your privileges or do not want to globally install Bundler, you can use the `--user-install` option.
25
+
26
+ gem install bundler --user-install
27
+
28
+ This will install Bundler into your home directory. Note that you will need to append `~/.gem/ruby/<ruby version>/bin` to your `$PATH` variable to use `bundle`.
29
+
13
30
  ### Heroku errors
14
31
 
15
32
  Please open a ticket with [Heroku](https://www.heroku.com) if you're having trouble deploying. They have a professional support team who can help you resolve Heroku issues far better than the Bundler team can. If the problem that you are having turns out to be a bug in Bundler itself, [Heroku support](https://www.heroku.com/support) can get the exact details to us.
@@ -19,6 +19,8 @@ bundle install
19
19
  bundle exec rspec
20
20
  ```
21
21
 
22
+ For help with installation issues, see [ISSUES](https://github.com/bundler/bundler/blob/master/ISSUES.md)
23
+
22
24
  See [bundler.io](http://bundler.io) for the full documentation.
23
25
 
24
26
  ### Troubleshooting
@@ -4,12 +4,10 @@
4
4
  # Exit cleanly from an early interrupt
5
5
  Signal.trap("INT") { exit 1 }
6
6
 
7
- unless ENV["BUNDLE_DISABLE_POSTIT"]
8
- update = "update".start_with?(ARGV.first || " ") && ARGV.find {|a| a.start_with?("--bundler") }
9
- update &&= update =~ /--bundler(?:=(.+))?/ && $1 || "> 0.a"
10
- ENV["BUNDLER_VERSION"] = update if update
11
- require "bundler/postit_trampoline"
12
- end
7
+ update = "update".start_with?(ARGV.first || " ") && ARGV.find {|a| a.start_with?("--bundler") }
8
+ update &&= update =~ /--bundler(?:=(.+))?/ && $1 || "> 0.a"
9
+ ENV["BUNDLER_VERSION"] = update if update
10
+ require "bundler/postit_trampoline"
13
11
 
14
12
  require "bundler"
15
13
  # Check if an older version of bundler is installed
@@ -3,14 +3,12 @@
3
3
 
4
4
  Signal.trap("INT") { exit 1 }
5
5
 
6
+ require "bundler/errors"
6
7
  require "bundler/ruby_version"
7
8
  require "bundler/ruby_dsl"
8
9
  require "bundler/shared_helpers"
9
10
 
10
11
  module Bundler
11
- class GemfileError < RuntimeError; end
12
- class GemfileEvalError < GemfileError; end
13
-
14
12
  class Dsl
15
13
  include RubyDsl
16
14
 
@@ -44,7 +42,7 @@ module Bundler
44
42
  end
45
43
  end
46
44
 
47
- STDERR.puts "Warning: bundle_ruby will be deprecated in Bundler 2.0.0."
45
+ Bundler::SharedHelpers.major_deprecation("the bundle_ruby executable has been removed in favor of `bundle platform --ruby`")
48
46
 
49
47
  dsl = Bundler::Dsl.new
50
48
  begin
@@ -1,22 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- # Exit cleanly from an early interrupt
5
- Signal.trap("INT") { exit 1 }
6
-
7
- require "bundler"
8
- # Check if an older version of bundler is installed
9
- $LOAD_PATH.each do |path|
10
- next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
11
- err = String.new
12
- err << "Looks like you have a version of bundler that's older than 0.9.\n"
13
- err << "Please remove your old versions.\n"
14
- err << "An easy way to do this is by running `gem cleanup bundler`."
15
- abort(err)
16
- end
17
-
18
- require "bundler/friendly_errors"
19
- Bundler.with_friendly_errors do
20
- require "bundler/cli"
21
- Bundler::CLI.start(ARGV, :debug => true)
22
- end
4
+ load File.expand_path("../bundle", __FILE__)
@@ -3,14 +3,17 @@ require "fileutils"
3
3
  require "pathname"
4
4
  require "rbconfig"
5
5
  require "thread"
6
+ require "tmpdir"
7
+
8
+ require "bundler/errors"
6
9
  require "bundler/environment_preserver"
7
10
  require "bundler/gem_remote_fetcher"
11
+ require "bundler/plugin"
8
12
  require "bundler/rubygems_ext"
9
13
  require "bundler/rubygems_integration"
10
14
  require "bundler/version"
11
15
  require "bundler/constants"
12
16
  require "bundler/current_ruby"
13
- require "bundler/errors"
14
17
 
15
18
  module Bundler
16
19
  environment_preserver = EnvironmentPreserver.new(ENV, %w(PATH GEM_PATH))
@@ -24,34 +27,34 @@ module Bundler
24
27
  autoload :Deprecate, "bundler/deprecate"
25
28
  autoload :Dsl, "bundler/dsl"
26
29
  autoload :EndpointSpecification, "bundler/endpoint_specification"
27
- autoload :Environment, "bundler/environment"
28
30
  autoload :Env, "bundler/env"
29
31
  autoload :Fetcher, "bundler/fetcher"
32
+ autoload :FeatureFlag, "bundler/feature_flag"
30
33
  autoload :GemHelper, "bundler/gem_helper"
31
34
  autoload :GemHelpers, "bundler/gem_helpers"
35
+ autoload :GemVersionPromoter, "bundler/gem_version_promoter"
32
36
  autoload :Graph, "bundler/graph"
33
37
  autoload :Index, "bundler/index"
34
- autoload :Installer, "bundler/installer"
35
38
  autoload :Injector, "bundler/injector"
39
+ autoload :Installer, "bundler/installer"
36
40
  autoload :LazySpecification, "bundler/lazy_specification"
37
41
  autoload :LockfileParser, "bundler/lockfile_parser"
38
42
  autoload :MatchPlatform, "bundler/match_platform"
39
43
  autoload :Mirror, "bundler/mirror"
40
44
  autoload :Mirrors, "bundler/mirror"
41
- autoload :Plugin, "bundler/plugin"
42
45
  autoload :RemoteSpecification, "bundler/remote_specification"
43
46
  autoload :Resolver, "bundler/resolver"
44
47
  autoload :Retry, "bundler/retry"
45
- autoload :RubyVersion, "bundler/ruby_version"
46
48
  autoload :RubyDsl, "bundler/ruby_dsl"
49
+ autoload :RubyGemsGemInstaller, "bundler/rubygems_gem_installer"
50
+ autoload :RubyVersion, "bundler/ruby_version"
47
51
  autoload :Runtime, "bundler/runtime"
48
52
  autoload :Settings, "bundler/settings"
49
53
  autoload :SharedHelpers, "bundler/shared_helpers"
50
- autoload :SpecSet, "bundler/spec_set"
51
- autoload :StubSpecification, "bundler/stub_specification"
52
54
  autoload :Source, "bundler/source"
53
55
  autoload :SourceList, "bundler/source_list"
54
- autoload :RubyGemsGemInstaller, "bundler/rubygems_gem_installer"
56
+ autoload :SpecSet, "bundler/spec_set"
57
+ autoload :StubSpecification, "bundler/stub_specification"
55
58
  autoload :UI, "bundler/ui"
56
59
  autoload :URICredentialsFilter, "bundler/uri_credentials_filter"
57
60
 
@@ -88,9 +91,11 @@ module Bundler
88
91
 
89
92
  def setup(*groups)
90
93
  # Return if all groups are already loaded
91
- return @setup if defined?(@setup)
94
+ return @setup if defined?(@setup) && @setup
95
+
96
+ definition.validate_runtime!
92
97
 
93
- definition.validate_ruby!
98
+ SharedHelpers.print_major_deprecations!
94
99
 
95
100
  if groups.empty?
96
101
  # Load all groups, but only once
@@ -109,7 +114,8 @@ module Bundler
109
114
  end
110
115
 
111
116
  def environment
112
- Bundler::Environment.new(root, definition)
117
+ SharedHelpers.major_deprecation "Bundler.environment has been removed in favor of Bundler.load"
118
+ load
113
119
  end
114
120
 
115
121
  # Returns an instance of Bundler::Definition for given Gemfile and lockfile
@@ -121,27 +127,59 @@ module Bundler
121
127
  @definition = nil if unlock
122
128
  @definition ||= begin
123
129
  configure
124
- upgrade_lockfile
125
130
  Definition.build(default_gemfile, default_lockfile, unlock)
126
131
  end
127
132
  end
128
133
 
129
134
  def locked_gems
130
- return @locked_gems if defined?(@locked_gems)
131
- if Bundler.default_lockfile.exist?
132
- lock = Bundler.read_file(Bundler.default_lockfile)
133
- @locked_gems = LockfileParser.new(lock)
134
- else
135
- @locked_gems = nil
136
- end
135
+ @locked_gems ||=
136
+ if defined?(@definition) && @definition
137
+ definition.locked_gems
138
+ elsif Bundler.default_lockfile.exist?
139
+ lock = Bundler.read_file(Bundler.default_lockfile)
140
+ LockfileParser.new(lock)
141
+ end
137
142
  end
138
143
 
139
144
  def ruby_scope
140
145
  "#{Bundler.rubygems.ruby_engine}/#{Bundler.rubygems.config_map[:ruby_version]}"
141
146
  end
142
147
 
148
+ def user_home
149
+ @user_home ||= begin
150
+ home = Bundler.rubygems.user_home
151
+ warning = "Your home directory is not set properly:"
152
+ if home.nil?
153
+ warning += "\n * It is not set at all"
154
+ elsif !File.directory?(home)
155
+ warning += "\n * `#{home}` is not a directory"
156
+ elsif !File.writable?(home)
157
+ warning += "\n * `#{home}` is not writable"
158
+ else
159
+ return @user_home = Pathname.new(home)
160
+ end
161
+
162
+ login = Etc.getlogin || "unknown"
163
+
164
+ tmp_home = Pathname.new(Dir.tmpdir).join("bundler", "home", login)
165
+ begin
166
+ SharedHelpers.filesystem_access(tmp_home, :write) do |p|
167
+ FileUtils.mkdir_p(p)
168
+ end
169
+ rescue => e
170
+ warning += "\n\nBundler also failed to create a temporary home directory at `#{tmp_home}`:\n#{e}"
171
+ raise warning
172
+ end
173
+
174
+ warning += "\n\nBundler will use `#{tmp_home}` as your home directory temporarily"
175
+
176
+ Bundler.ui.warn(warning)
177
+ tmp_home
178
+ end
179
+ end
180
+
143
181
  def user_bundle_path
144
- Pathname.new(Bundler.rubygems.user_home).join(".bundle")
182
+ Pathname.new(user_home).join(".bundle")
145
183
  end
146
184
 
147
185
  def home
@@ -193,6 +231,14 @@ module Bundler
193
231
 
194
232
  def rm_rf(path)
195
233
  FileUtils.remove_entry_secure(path) if path && File.exist?(path)
234
+ rescue ArgumentError
235
+ message = <<EOF
236
+ It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
237
+ You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
238
+ Please refer to http://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
239
+ EOF
240
+ File.world_writable?(path) ? Bundler.ui.warn(message) : raise
241
+ raise PathError, "Please fix the world-writable issue with your #{path} directory"
196
242
  end
197
243
 
198
244
  def settings
@@ -209,10 +255,11 @@ module Bundler
209
255
  # @deprecated Use `original_env` instead
210
256
  # @return [Hash] Environment with all bundler-related variables removed
211
257
  def clean_env
258
+ Bundler::SharedHelpers.major_deprecation("`Bundler.clean_env` has weird edge cases, use `.original_env` instead")
212
259
  env = original_env
213
260
 
214
- if env.key?("BUNDLE_ORIG_MANPATH")
215
- env["MANPATH"] = env["BUNDLE_ORIG_MANPATH"]
261
+ if env.key?("BUNDLER_ORIG_MANPATH")
262
+ env["MANPATH"] = env["BUNDLER_ORIG_MANPATH"]
216
263
  end
217
264
 
218
265
  env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
@@ -246,6 +293,11 @@ module Bundler
246
293
  with_clean_env { Kernel.exec(*args) }
247
294
  end
248
295
 
296
+ def local_platform
297
+ return Gem::Platform::RUBY if settings[:force_ruby_platform]
298
+ Gem::Platform.local
299
+ end
300
+
249
301
  def default_gemfile
250
302
  SharedHelpers.default_gemfile
251
303
  end
@@ -317,17 +369,23 @@ module Bundler
317
369
  def sudo(str)
318
370
  SUDO_MUTEX.synchronize do
319
371
  prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
320
- Your user account isn't allowed to install to the system Rubygems.
372
+ Your user account isn't allowed to install to the system RubyGems.
321
373
  You can cancel this installation and run:
322
374
 
323
375
  bundle install --path vendor/bundle
324
376
 
325
377
  to install the gems into ./vendor/bundle/, or you can enter your password
326
- and install the bundled gems to Rubygems using sudo.
378
+ and install the bundled gems to RubyGems using sudo.
327
379
 
328
380
  Password:
329
381
  PROMPT
330
382
 
383
+ unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
384
+ raise SudoNotPermittedError,
385
+ "Bundler requires sudo access to install at the moment. " \
386
+ "Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
387
+ end
388
+
331
389
  `sudo -p "#{prompt}" #{str}`
332
390
  end
333
391
  end
@@ -378,10 +436,27 @@ module Bundler
378
436
  @git_present = Bundler.which("git") || Bundler.which("git.exe")
379
437
  end
380
438
 
439
+ def feature_flag
440
+ @feature_flag ||= FeatureFlag.new(VERSION)
441
+ end
442
+
381
443
  def reset!
382
444
  @root = nil
383
445
  @settings = nil
384
446
  @definition = nil
447
+ @setup = nil
448
+ @load = nil
449
+ @locked_gems = nil
450
+ @bundle_path = nil
451
+ @bin_path = nil
452
+ @user_home = nil
453
+
454
+ Plugin.reset!
455
+
456
+ return unless defined?(@rubygems) && @rubygems
457
+ rubygems.undo_replacements
458
+ rubygems.reset
459
+ @rubygems = nil
385
460
  end
386
461
 
387
462
  private
@@ -397,31 +472,33 @@ module Bundler
397
472
  def eval_gemspec(path, contents)
398
473
  eval(contents, TOPLEVEL_BINDING, path.expand_path.to_s)
399
474
  rescue ScriptError, StandardError => e
400
- original_line = e.backtrace.find {|line| line.include?(path.to_s) }
401
- msg = String.new
402
- msg << "There was a #{e.class} while loading #{path.basename}: \n#{e.message}"
403
- msg << " from\n #{original_line}" if original_line
404
- msg << "\n"
475
+ msg = "There was an error while loading `#{path.basename}`: #{e.message}"
405
476
 
406
477
  if e.is_a?(LoadError) && RUBY_VERSION >= "1.9"
407
- msg << "\nDoes it try to require a relative path? That's been removed in Ruby 1.9."
478
+ msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
408
479
  end
409
480
 
410
- raise GemspecError, msg
481
+ raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
411
482
  end
412
483
 
413
484
  def configure_gem_home_and_path
414
- blank_home = ENV["GEM_HOME"].nil? || ENV["GEM_HOME"].empty?
485
+ configure_gem_path
486
+ configure_gem_home
487
+ bundle_path
488
+ end
489
+
490
+ def configure_gem_path(env = ENV, settings = self.settings)
491
+ blank_home = env["GEM_HOME"].nil? || env["GEM_HOME"].empty?
415
492
  if settings[:disable_shared_gems]
416
- ENV["GEM_PATH"] = ""
493
+ # this needs to be empty string to cause
494
+ # PathSupport.split_gem_path to only load up the
495
+ # Bundler --path setting as the GEM_PATH.
496
+ env["GEM_PATH"] = ""
417
497
  elsif blank_home || Bundler.rubygems.gem_dir != bundle_path.to_s
418
498
  possibles = [Bundler.rubygems.gem_dir, Bundler.rubygems.gem_path]
419
499
  paths = possibles.flatten.compact.uniq.reject(&:empty?)
420
- ENV["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
500
+ env["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
421
501
  end
422
-
423
- configure_gem_home
424
- bundle_path
425
502
  end
426
503
 
427
504
  def configure_gem_home
@@ -436,13 +513,6 @@ module Bundler
436
513
  Bundler.rubygems.clear_paths
437
514
  end
438
515
 
439
- def upgrade_lockfile
440
- lockfile = default_lockfile
441
- return unless lockfile.exist? && lockfile.read(3) == "---"
442
- Bundler.ui.warn "Detected Gemfile.lock generated by 0.9, deleting..."
443
- lockfile.rmtree
444
- end
445
-
446
516
  # @param env [Hash]
447
517
  def with_env(env)
448
518
  backup = ENV.to_hash