bundler 1.15.2 → 2.4.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +2861 -1117
  3. data/LICENSE.md +18 -19
  4. data/README.md +22 -17
  5. data/bundler.gemspec +23 -27
  6. data/exe/bundle +27 -12
  7. data/exe/bundler +1 -1
  8. data/lib/bundler/.document +1 -0
  9. data/lib/bundler/build_metadata.rb +45 -0
  10. data/lib/bundler/capistrano.rb +7 -2
  11. data/lib/bundler/cli/add.rb +33 -12
  12. data/lib/bundler/cli/binstubs.rb +25 -9
  13. data/lib/bundler/cli/cache.rb +25 -17
  14. data/lib/bundler/cli/check.rb +8 -8
  15. data/lib/bundler/cli/clean.rb +6 -7
  16. data/lib/bundler/cli/common.rb +52 -15
  17. data/lib/bundler/cli/config.rb +171 -86
  18. data/lib/bundler/cli/console.rb +5 -4
  19. data/lib/bundler/cli/doctor.rb +72 -8
  20. data/lib/bundler/cli/exec.rb +13 -29
  21. data/lib/bundler/cli/fund.rb +36 -0
  22. data/lib/bundler/cli/gem.rb +266 -48
  23. data/lib/bundler/cli/info.rb +52 -9
  24. data/lib/bundler/cli/init.rb +22 -6
  25. data/lib/bundler/cli/inject.rb +2 -1
  26. data/lib/bundler/cli/install.rb +74 -99
  27. data/lib/bundler/cli/issue.rb +9 -8
  28. data/lib/bundler/cli/list.rb +66 -0
  29. data/lib/bundler/cli/lock.rb +11 -5
  30. data/lib/bundler/cli/open.rb +14 -9
  31. data/lib/bundler/cli/outdated.rb +165 -123
  32. data/lib/bundler/cli/platform.rb +3 -2
  33. data/lib/bundler/cli/plugin.rb +20 -2
  34. data/lib/bundler/cli/pristine.rb +25 -6
  35. data/lib/bundler/cli/remove.rb +17 -0
  36. data/lib/bundler/cli/show.rb +3 -4
  37. data/lib/bundler/cli/update.rb +71 -12
  38. data/lib/bundler/cli/viz.rb +2 -1
  39. data/lib/bundler/cli.rb +394 -152
  40. data/lib/bundler/compact_index_client/cache.rb +8 -26
  41. data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/lib/bundler/compact_index_client/updater.rb +62 -51
  43. data/lib/bundler/compact_index_client.rb +29 -18
  44. data/lib/bundler/constants.rb +2 -1
  45. data/lib/bundler/current_ruby.rb +36 -13
  46. data/lib/bundler/definition.rb +417 -434
  47. data/lib/bundler/dependency.rb +34 -76
  48. data/lib/bundler/deployment.rb +2 -2
  49. data/lib/bundler/deprecate.rb +15 -3
  50. data/lib/bundler/digest.rb +71 -0
  51. data/lib/bundler/dsl.rb +135 -116
  52. data/lib/bundler/endpoint_specification.rb +26 -15
  53. data/lib/bundler/env.rb +95 -39
  54. data/lib/bundler/environment_preserver.rb +56 -8
  55. data/lib/bundler/errors.rb +32 -14
  56. data/lib/bundler/feature_flag.rb +29 -7
  57. data/lib/bundler/fetcher/base.rb +8 -9
  58. data/lib/bundler/fetcher/compact_index.rb +47 -49
  59. data/lib/bundler/fetcher/dependency.rb +5 -8
  60. data/lib/bundler/fetcher/downloader.rb +26 -17
  61. data/lib/bundler/fetcher/index.rb +5 -30
  62. data/lib/bundler/fetcher.rb +51 -46
  63. data/lib/bundler/force_platform.rb +18 -0
  64. data/lib/bundler/friendly_errors.rb +53 -53
  65. data/lib/bundler/gem_helper.rb +95 -50
  66. data/lib/bundler/gem_helpers.rb +45 -28
  67. data/lib/bundler/gem_tasks.rb +2 -1
  68. data/lib/bundler/gem_version_promoter.rb +60 -90
  69. data/lib/bundler/graph.rb +6 -5
  70. data/lib/bundler/index.rb +23 -61
  71. data/lib/bundler/injector.rb +228 -32
  72. data/lib/bundler/inline.rb +29 -32
  73. data/lib/bundler/installer/gem_installer.rb +24 -16
  74. data/lib/bundler/installer/parallel_installer.rb +94 -71
  75. data/lib/bundler/installer/standalone.rb +63 -12
  76. data/lib/bundler/installer.rb +128 -94
  77. data/lib/bundler/lazy_specification.rb +89 -52
  78. data/lib/bundler/lockfile_generator.rb +95 -0
  79. data/lib/bundler/lockfile_parser.rb +40 -66
  80. data/lib/bundler/man/bundle-add.1 +82 -0
  81. data/lib/bundler/man/bundle-add.1.ronn +58 -0
  82. data/lib/bundler/man/bundle-binstubs.1 +42 -0
  83. data/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
  84. data/lib/bundler/man/bundle-cache.1 +61 -0
  85. data/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +26 -14
  86. data/{man → lib/bundler/man}/bundle-check.1 +4 -4
  87. data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +3 -3
  88. data/{man → lib/bundler/man}/bundle-clean.1 +2 -2
  89. data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
  90. data/{man → lib/bundler/man}/bundle-config.1 +175 -57
  91. data/lib/bundler/man/bundle-config.1.ronn +408 -0
  92. data/lib/bundler/man/bundle-console.1 +53 -0
  93. data/lib/bundler/man/bundle-console.1.ronn +44 -0
  94. data/lib/bundler/man/bundle-doctor.1 +44 -0
  95. data/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  96. data/{man → lib/bundler/man}/bundle-exec.1 +11 -8
  97. data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +16 -9
  98. data/lib/bundler/man/bundle-gem.1 +105 -0
  99. data/lib/bundler/man/bundle-gem.1.ronn +117 -0
  100. data/lib/bundler/man/bundle-help.1 +13 -0
  101. data/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/lib/bundler/man/bundle-init.1 +29 -0
  104. data/lib/bundler/man/bundle-init.1.ronn +31 -0
  105. data/{man → lib/bundler/man}/bundle-inject.1 +7 -4
  106. data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +5 -3
  107. data/{man → lib/bundler/man}/bundle-install.1 +63 -55
  108. data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +81 -68
  109. data/lib/bundler/man/bundle-list.1 +50 -0
  110. data/lib/bundler/man/bundle-list.1.ronn +33 -0
  111. data/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  112. data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +1 -1
  113. data/{man → lib/bundler/man}/bundle-open.1 +22 -2
  114. data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
  115. data/{man → lib/bundler/man}/bundle-outdated.1 +8 -11
  116. data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +7 -12
  117. data/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  118. data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  119. data/lib/bundler/man/bundle-plugin.1 +81 -0
  120. data/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  121. data/lib/bundler/man/bundle-pristine.1 +34 -0
  122. data/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  123. data/lib/bundler/man/bundle-remove.1 +31 -0
  124. data/lib/bundler/man/bundle-remove.1.ronn +23 -0
  125. data/{man → lib/bundler/man}/bundle-show.1 +3 -3
  126. data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +3 -2
  127. data/{man → lib/bundler/man}/bundle-update.1 +17 -13
  128. data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +27 -22
  129. data/lib/bundler/man/bundle-version.1 +35 -0
  130. data/lib/bundler/man/bundle-version.1.ronn +24 -0
  131. data/{man → lib/bundler/man}/bundle-viz.1 +10 -7
  132. data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +8 -6
  133. data/{man → lib/bundler/man}/bundle.1 +44 -31
  134. data/lib/bundler/man/bundle.1.ronn +116 -0
  135. data/{man → lib/bundler/man}/gemfile.5 +153 -83
  136. data/{man → lib/bundler/man}/gemfile.5.ronn +156 -93
  137. data/lib/bundler/man/index.txt +29 -0
  138. data/lib/bundler/match_metadata.rb +13 -0
  139. data/lib/bundler/match_platform.rb +2 -2
  140. data/lib/bundler/match_remote_metadata.rb +29 -0
  141. data/lib/bundler/mirror.rb +16 -15
  142. data/lib/bundler/plugin/api/source.rb +35 -14
  143. data/lib/bundler/plugin/api.rb +1 -1
  144. data/lib/bundler/plugin/dsl.rb +1 -1
  145. data/lib/bundler/plugin/events.rb +61 -0
  146. data/lib/bundler/plugin/index.rb +38 -10
  147. data/lib/bundler/plugin/installer/git.rb +0 -4
  148. data/lib/bundler/plugin/installer/rubygems.rb +1 -9
  149. data/lib/bundler/plugin/installer.rb +35 -18
  150. data/lib/bundler/plugin/source_list.rb +11 -8
  151. data/lib/bundler/plugin.rb +115 -47
  152. data/lib/bundler/process_lock.rb +24 -0
  153. data/lib/bundler/remote_specification.rb +12 -8
  154. data/lib/bundler/resolver/base.rb +107 -0
  155. data/lib/bundler/resolver/candidate.rb +94 -0
  156. data/lib/bundler/resolver/incompatibility.rb +15 -0
  157. data/lib/bundler/resolver/package.rb +72 -0
  158. data/lib/bundler/resolver/root.rb +25 -0
  159. data/lib/bundler/resolver/spec_group.rb +82 -0
  160. data/lib/bundler/resolver.rb +327 -324
  161. data/lib/bundler/retry.rb +5 -4
  162. data/lib/bundler/ruby_dsl.rb +2 -1
  163. data/lib/bundler/ruby_version.rb +11 -38
  164. data/lib/bundler/rubygems_ext.rb +236 -90
  165. data/lib/bundler/rubygems_gem_installer.rb +104 -8
  166. data/lib/bundler/rubygems_integration.rb +204 -501
  167. data/lib/bundler/runtime.rb +35 -48
  168. data/lib/bundler/self_manager.rb +168 -0
  169. data/lib/bundler/settings/validator.rb +102 -0
  170. data/lib/bundler/settings.rb +309 -142
  171. data/lib/bundler/setup.rb +15 -12
  172. data/lib/bundler/shared_helpers.rb +147 -83
  173. data/lib/bundler/similarity_detector.rb +4 -3
  174. data/lib/bundler/source/gemspec.rb +1 -0
  175. data/lib/bundler/source/git/git_proxy.rb +281 -125
  176. data/lib/bundler/source/git.rb +102 -73
  177. data/lib/bundler/source/metadata.rb +62 -0
  178. data/lib/bundler/source/path/installer.rb +13 -32
  179. data/lib/bundler/source/path.rb +36 -25
  180. data/lib/bundler/source/rubygems/remote.rb +9 -4
  181. data/lib/bundler/source/rubygems.rb +273 -226
  182. data/lib/bundler/source/rubygems_aggregate.rb +68 -0
  183. data/lib/bundler/source.rb +65 -9
  184. data/lib/bundler/source_list.rb +138 -33
  185. data/lib/bundler/source_map.rb +71 -0
  186. data/lib/bundler/spec_set.rb +101 -72
  187. data/lib/bundler/stub_specification.rb +45 -36
  188. data/lib/bundler/templates/.document +1 -0
  189. data/lib/bundler/templates/Executable +13 -3
  190. data/lib/bundler/templates/Executable.bundler +109 -0
  191. data/lib/bundler/templates/Executable.standalone +4 -4
  192. data/lib/bundler/templates/Gemfile +1 -2
  193. data/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  194. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  195. data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  196. data/lib/bundler/templates/newgem/Gemfile.tt +22 -2
  197. data/lib/bundler/templates/newgem/README.md.tt +14 -16
  198. data/lib/bundler/templates/newgem/Rakefile.tt +43 -5
  199. data/lib/bundler/templates/newgem/bin/console.tt +1 -4
  200. data/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  201. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  202. data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  203. data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  204. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  205. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  206. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  207. data/lib/bundler/templates/newgem/gitignore.tt +3 -1
  208. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  209. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  210. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +5 -2
  211. data/lib/bundler/templates/newgem/newgem.gemspec.tt +39 -35
  212. data/lib/bundler/templates/newgem/rspec.tt +1 -0
  213. data/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  214. data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  215. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -1
  216. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  217. data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  218. data/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  219. data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  220. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  221. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  222. data/lib/bundler/ui/rg_proxy.rb +2 -1
  223. data/lib/bundler/ui/shell.rb +49 -17
  224. data/lib/bundler/ui/silent.rb +22 -5
  225. data/lib/bundler/ui.rb +4 -3
  226. data/lib/bundler/uri_credentials_filter.rb +11 -4
  227. data/lib/bundler/uri_normalizer.rb +23 -0
  228. data/lib/bundler/vendor/.document +1 -0
  229. data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  230. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  231. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  232. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  233. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
  234. data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  235. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +2706 -0
  236. data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  237. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  238. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  239. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  240. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  241. data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  242. data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  243. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  244. data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  245. data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  246. data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  247. data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  248. data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  249. data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  250. data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  251. data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  252. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  253. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  254. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  255. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  256. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  257. data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  258. data/lib/bundler/vendor/thor/LICENSE.md +20 -0
  259. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +2 -1
  260. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +4 -2
  261. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  262. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +9 -1
  263. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +64 -16
  264. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +27 -11
  265. data/lib/bundler/vendor/thor/lib/thor/actions.rb +38 -16
  266. data/lib/bundler/vendor/thor/lib/thor/base.rb +84 -41
  267. data/lib/bundler/vendor/thor/lib/thor/command.rb +30 -21
  268. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +18 -0
  269. data/lib/bundler/vendor/thor/lib/thor/error.rb +83 -0
  270. data/lib/bundler/vendor/thor/lib/thor/group.rb +4 -4
  271. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  272. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
  273. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  274. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  275. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  276. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  277. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +22 -9
  278. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +45 -10
  279. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  280. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  281. data/lib/bundler/vendor/thor/lib/thor/runner.rb +17 -14
  282. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +97 -21
  283. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  284. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  285. data/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
  286. data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  287. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  288. data/lib/bundler/vendor/thor/lib/thor.rb +39 -15
  289. data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  290. data/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  291. data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  292. data/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
  293. data/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  294. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  295. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
  296. data/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  297. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  298. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  299. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  300. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  301. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  302. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
  303. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  304. data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  305. data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  306. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  307. data/lib/bundler/vendored_fileutils.rb +4 -0
  308. data/lib/bundler/vendored_persistent.rb +6 -8
  309. data/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +2 -1
  310. data/lib/bundler/vendored_thor.rb +3 -2
  311. data/lib/bundler/vendored_tsort.rb +4 -0
  312. data/lib/bundler/vendored_uri.rb +4 -0
  313. data/lib/bundler/version.rb +8 -19
  314. data/lib/bundler/vlad.rb +6 -1
  315. data/lib/bundler/worker.rb +26 -14
  316. data/lib/bundler/yaml_serializer.rb +6 -7
  317. data/lib/bundler.rb +336 -199
  318. metadata +174 -236
  319. data/.codeclimate.yml +0 -25
  320. data/.gitignore +0 -18
  321. data/.rspec +0 -3
  322. data/.rubocop.yml +0 -131
  323. data/.rubocop_todo.yml +0 -418
  324. data/.travis.yml +0 -122
  325. data/CODE_OF_CONDUCT.md +0 -42
  326. data/CONTRIBUTING.md +0 -17
  327. data/Rakefile +0 -338
  328. data/bin/rake +0 -19
  329. data/bin/rspec +0 -15
  330. data/bin/rubocop +0 -17
  331. data/bin/with_rubygems +0 -39
  332. data/doc/README.md +0 -30
  333. data/doc/TROUBLESHOOTING.md +0 -64
  334. data/doc/contributing/BUG_TRIAGE.md +0 -36
  335. data/doc/contributing/COMMUNITY.md +0 -13
  336. data/doc/contributing/GETTING_HELP.md +0 -11
  337. data/doc/contributing/HOW_YOU_CAN_HELP.md +0 -27
  338. data/doc/contributing/ISSUES.md +0 -51
  339. data/doc/contributing/README.md +0 -38
  340. data/doc/development/NEW_FEATURES.md +0 -10
  341. data/doc/development/PULL_REQUESTS.md +0 -40
  342. data/doc/development/README.md +0 -19
  343. data/doc/development/RELEASING.md +0 -9
  344. data/doc/development/SETUP.md +0 -27
  345. data/doc/documentation/README.md +0 -29
  346. data/doc/documentation/VISION.md +0 -26
  347. data/doc/documentation/WRITING.md +0 -54
  348. data/exe/bundle_ruby +0 -59
  349. data/lib/bundler/cli/package.rb +0 -46
  350. data/lib/bundler/dep_proxy.rb +0 -46
  351. data/lib/bundler/gem_remote_fetcher.rb +0 -42
  352. data/lib/bundler/gemdeps.rb +0 -28
  353. data/lib/bundler/psyched_yaml.rb +0 -27
  354. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -65
  355. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  356. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  357. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  358. data/lib/bundler/templates/newgem/.travis.yml.tt +0 -5
  359. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -3
  360. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  361. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -50
  362. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -80
  363. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -35
  364. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -65
  365. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -61
  366. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -62
  367. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -60
  368. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -125
  369. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -45
  370. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -35
  371. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -125
  372. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -222
  373. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -75
  374. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -5
  375. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -100
  376. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -65
  377. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -494
  378. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -45
  379. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -54
  380. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -10
  381. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  382. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  383. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  384. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  385. data/lib/bundler/version_ranges.rb +0 -75
  386. data/man/bundle-add.1 +0 -43
  387. data/man/bundle-add.1.txt +0 -40
  388. data/man/bundle-add.ronn +0 -29
  389. data/man/bundle-binstubs.1 +0 -30
  390. data/man/bundle-binstubs.1.txt +0 -33
  391. data/man/bundle-binstubs.ronn +0 -29
  392. data/man/bundle-check.1.txt +0 -32
  393. data/man/bundle-clean.1.txt +0 -26
  394. data/man/bundle-config.1.txt +0 -418
  395. data/man/bundle-config.ronn +0 -318
  396. data/man/bundle-exec.1.txt +0 -171
  397. data/man/bundle-gem.1 +0 -80
  398. data/man/bundle-gem.1.txt +0 -90
  399. data/man/bundle-gem.ronn +0 -77
  400. data/man/bundle-info.1.txt +0 -21
  401. data/man/bundle-init.1 +0 -20
  402. data/man/bundle-init.1.txt +0 -24
  403. data/man/bundle-init.ronn +0 -18
  404. data/man/bundle-inject.1.txt +0 -32
  405. data/man/bundle-install.1.txt +0 -385
  406. data/man/bundle-lock.1.txt +0 -93
  407. data/man/bundle-open.1.txt +0 -29
  408. data/man/bundle-outdated.1.txt +0 -127
  409. data/man/bundle-package.1 +0 -52
  410. data/man/bundle-package.1.txt +0 -74
  411. data/man/bundle-platform.1.txt +0 -57
  412. data/man/bundle-pristine.1 +0 -16
  413. data/man/bundle-pristine.1.txt +0 -21
  414. data/man/bundle-pristine.ronn +0 -13
  415. data/man/bundle-show.1.txt +0 -25
  416. data/man/bundle-update.1.txt +0 -388
  417. data/man/bundle-viz.1.txt +0 -37
  418. data/man/bundle.1.txt +0 -110
  419. data/man/bundle.ronn +0 -105
  420. data/man/gemfile.5.txt +0 -600
  421. data/man/index.txt +0 -15
  422. data/task/release.rake +0 -116
  423. /data/lib/bundler/{ssl_certs → man}/.document +0 -0
  424. /data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
@@ -15,27 +15,32 @@ directory as the `Rakefile`.
15
15
  A `Gemfile` is evaluated as Ruby code, in a context which makes available
16
16
  a number of methods used to describe the gem requirements.
17
17
 
18
- ## GLOBAL SOURCES
18
+ ## GLOBAL SOURCE
19
19
 
20
- At the top of the `Gemfile`, add a line for the `Rubygems` source that contains
21
- the gems listed in the `Gemfile`.
20
+ At the top of the `Gemfile`, add a single line for the `RubyGems` source that
21
+ contains the gems listed in the `Gemfile`.
22
22
 
23
23
  source "https://rubygems.org"
24
24
 
25
- It is possible, but not recommended as of Bundler 1.7, to add multiple global
26
- `source` lines. Each of these `source`s `MUST` be a valid Rubygems repository.
25
+ You can add only one global source. In Bundler 1.13, adding multiple global
26
+ sources was deprecated. The `source` `MUST` be a valid RubyGems repository.
27
27
 
28
- Sources are checked for gems following the heuristics described in
29
- [SOURCE PRIORITY][]. If a gem is found in more than one global source, Bundler
28
+ To use more than one source of RubyGems, you should use [`source` block
29
+ ](#BLOCK-FORM-OF-SOURCE-GIT-PATH-GROUP-and-PLATFORMS).
30
+
31
+ A source is checked for gems following the heuristics described in
32
+ [SOURCE PRIORITY][].
33
+
34
+ **Note about a behavior of the feature deprecated in Bundler 1.13**:
35
+ If a gem is found in more than one global source, Bundler
30
36
  will print a warning after installing the gem indicating which source was used,
31
37
  and listing the other sources where the gem is available. A specific source can
32
38
  be selected for gems that need to use a non-standard repository, suppressing
33
- this warning, by using the [`:source` option](#SOURCE) or a
34
- [`source` block](#BLOCK-FORM-OF-SOURCE-GIT-PATH-GROUP-and-PLATFORMS).
39
+ this warning, by using the [`:source` option](#SOURCE) or `source` block.
35
40
 
36
41
  ### CREDENTIALS
37
42
 
38
- Some gem sources require a username and password. Use [bundle config(1)][bundle-config] to set
43
+ Some gem sources require a username and password. Use [bundle config(1)](bundle-config.1.html) to set
39
44
  the username and password for any of the sources that need it. The command must
40
45
  be run once on each computer that will install the Gemfile, but this keeps the
41
46
  credentials from being stored in plain text in version control.
@@ -59,29 +64,50 @@ All parameters are `OPTIONAL` unless otherwise specified.
59
64
  ### VERSION (required)
60
65
 
61
66
  The version of Ruby that your application requires. If your application
62
- requires an alternate Ruby engine, such as JRuby or Rubinius, this should be
63
- the Ruby version that the engine is compatible with.
67
+ requires an alternate Ruby engine, such as JRuby, TruffleRuby, etc., this
68
+ should be the Ruby version that the engine is compatible with.
64
69
 
65
- ruby "1.9.3"
70
+ ruby "3.1.2"
66
71
 
67
72
  ### ENGINE
68
73
 
69
74
  Each application _may_ specify a Ruby engine. If an engine is specified, an
70
75
  engine version _must_ also be specified.
71
76
 
77
+ What exactly is an Engine?
78
+ - A Ruby engine is an implementation of the Ruby language.
79
+
80
+ - For background: the reference or original implementation of the Ruby
81
+ programming language is called
82
+ [Matz's Ruby Interpreter](https://en.wikipedia.org/wiki/Ruby_MRI), or MRI
83
+ for short. This is named after Ruby creator Yukihiro Matsumoto,
84
+ also known as Matz. MRI is also known as CRuby, because it is written in C.
85
+ MRI is the most widely used Ruby engine.
86
+
87
+ - [Other implementations](https://www.ruby-lang.org/en/about/) of Ruby exist.
88
+ Some of the more well-known implementations include
89
+ [JRuby](http://jruby.org/) and [TruffleRuby](https://www.graalvm.org/ruby/).
90
+ Rubinius is an alternative implementation of Ruby written in Ruby.
91
+ JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine.
92
+ TruffleRuby is a Ruby implementation on the GraalVM, a language toolkit built on the JVM.
93
+
72
94
  ### ENGINE VERSION
73
95
 
74
96
  Each application _may_ specify a Ruby engine version. If an engine version is
75
97
  specified, an engine _must_ also be specified. If the engine is "ruby" the
76
98
  engine version specified _must_ match the Ruby version.
77
99
 
78
- ruby "1.8.7", :engine => "jruby", :engine_version => "1.6.7"
100
+ ruby "2.6.8", engine: "jruby", engine_version: "9.3.8.0"
79
101
 
80
102
  ### PATCHLEVEL
81
103
 
82
- Each application _may_ specify a Ruby patchlevel.
104
+ Each application _may_ specify a Ruby patchlevel. Specifying the patchlevel has
105
+ been meaningless since Ruby 2.1.0 was released as the patchlevel is now
106
+ uniquely determined by a combination of major, minor, and teeny version numbers.
107
+
108
+ This option was implemented in Bundler 1.4.0 for Ruby 2.0 or earlier.
83
109
 
84
- ruby "2.0.0", :patchlevel => "247"
110
+ ruby "3.1.2", patchlevel: "20"
85
111
 
86
112
  ## GEMS
87
113
 
@@ -104,27 +130,27 @@ Each _gem_ `MAY` have one or more version specifiers.
104
130
  ### REQUIRE AS
105
131
 
106
132
  Each _gem_ `MAY` specify files that should be used when autorequiring via
107
- `Bundler.require`. You may pass an array with multiple files or `true` if file
108
- you want `required` has same name as _gem_ or `false` to
133
+ `Bundler.require`. You may pass an array with multiple files or `true` if the file
134
+ you want `required` has the same name as _gem_ or `false` to
109
135
  prevent any file from being autorequired.
110
136
 
111
- gem "redis", :require => ["redis/connection/hiredis", "redis"]
112
- gem "webmock", :require => false
113
- gem "debugger", :require => true
137
+ gem "redis", require: ["redis/connection/hiredis", "redis"]
138
+ gem "webmock", require: false
139
+ gem "byebug", require: true
114
140
 
115
141
  The argument defaults to the name of the gem. For example, these are identical:
116
142
 
117
143
  gem "nokogiri"
118
- gem "nokogiri", :require => "nokogiri"
119
- gem "nokogiri", :require => true
144
+ gem "nokogiri", require: "nokogiri"
145
+ gem "nokogiri", require: true
120
146
 
121
147
  ### GROUPS
122
148
 
123
149
  Each _gem_ `MAY` specify membership in one or more groups. Any _gem_ that does
124
150
  not specify membership in any group is placed in the `default` group.
125
151
 
126
- gem "rspec", :group => :test
127
- gem "wirble", :groups => [:development, :test]
152
+ gem "rspec", group: :test
153
+ gem "wirble", groups: [:development, :test]
128
154
 
129
155
  The Bundler runtime allows its two main methods, `Bundler.setup` and
130
156
  `Bundler.require`, to limit their impact to particular groups.
@@ -143,15 +169,12 @@ The Bundler runtime allows its two main methods, `Bundler.setup` and
143
169
  Bundler.require(:test) # requires the _test_ group
144
170
 
145
171
  The Bundler CLI allows you to specify a list of groups whose gems `bundle install` should
146
- not install with the `--without` option. To specify multiple groups to ignore, specify a
147
- list of groups separated by spaces.
172
+ not install with the `without` configuration.
148
173
 
149
- bundle install --without test
150
- bundle install --without development test
174
+ To specify multiple groups to ignore, specify a list of groups separated by spaces.
151
175
 
152
- After running `bundle install --without test`, bundler will remember that you excluded
153
- the test group in the last installation. The next time you run `bundle install`,
154
- without any `--without option`, bundler will recall it.
176
+ bundle config set --local without test
177
+ bundle config set --local without development test
155
178
 
156
179
  Also, calling `Bundler.setup` with no parameters, or calling `require "bundler/setup"`
157
180
  will setup all groups except for the ones you excluded via `--without` (since they
@@ -160,7 +183,7 @@ are not available).
160
183
  Note that on `bundle install`, bundler downloads and evaluates all gems, in order to
161
184
  create a single canonical list of all of the required gems and their dependencies.
162
185
  This means that you cannot list different versions of the same gems in different
163
- groups. For more details, see [Understanding Bundler](http://bundler.io/rationale.html).
186
+ groups. For more details, see [Understanding Bundler](https://bundler.io/rationale.html).
164
187
 
165
188
  ### PLATFORMS
166
189
 
@@ -172,68 +195,77 @@ platforms.
172
195
  There are a number of `Gemfile` platforms:
173
196
 
174
197
  * `ruby`:
175
- C Ruby (MRI) or Rubinius, but `NOT` Windows
198
+ C Ruby (MRI), Rubinius, or TruffleRuby, but not Windows
176
199
  * `mri`:
177
- Same as _ruby_, but not Rubinius
178
- * `mingw`:
179
- Windows 32 bit 'mingw32' platform (aka RubyInstaller)
180
- * `x64_mingw`:
181
- Windows 64 bit 'mingw32' platform (aka RubyInstaller x64)
200
+ C Ruby (MRI) only, but not Windows
201
+ * `windows`:
202
+ Windows C Ruby (MRI), including RubyInstaller 32-bit and 64-bit versions
203
+ * `mswin`:
204
+ Windows C Ruby (MRI), including RubyInstaller 32-bit versions
205
+ * `mswin64`:
206
+ Windows C Ruby (MRI), including RubyInstaller 64-bit versions
182
207
  * `rbx`:
183
- Same as _ruby_, but only Rubinius (not MRI)
208
+ Rubinius
184
209
  * `jruby`:
185
210
  JRuby
186
- * `mswin`:
187
- Windows
211
+ * `truffleruby`:
212
+ TruffleRuby
188
213
 
189
- You can restrict further by platform and version for all platforms *except* for
190
- `rbx`, `jruby`, and `mswin`.
214
+ On platforms `ruby`, `mri`, `mswin`, `mswin64`, and `windows`, you may
215
+ additionally specify a version by appending the major and minor version numbers
216
+ without a delimiter. For example, to specify that a gem should only be used on
217
+ platform `ruby` version 3.1, use:
191
218
 
192
- To specify a version in addition to a platform, append the version number without
193
- the delimiter to the platform. For example, to specify that a gem should only be
194
- used on platforms with Ruby 2.3, use:
219
+ ruby_31
195
220
 
196
- ruby_23
221
+ As with groups (above), you may specify one or more platforms:
197
222
 
198
- The full list of platforms and supported versions includes:
223
+ gem "weakling", platforms: :jruby
224
+ gem "ruby-debug", platforms: :mri_31
225
+ gem "nokogiri", platforms: [:windows_31, :jruby]
199
226
 
200
- * `ruby`:
201
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
202
- * `mri`:
203
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
204
- * `mingw`:
205
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
206
- * `x64_mingw`:
207
- 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
227
+ All operations involving groups ([`bundle install`](bundle-install.1.html), `Bundler.setup`,
228
+ `Bundler.require`) behave exactly the same as if any groups not
229
+ matching the current platform were explicitly excluded.
208
230
 
209
- As with groups, you can specify one or more platforms:
231
+ ### FORCE_RUBY_PLATFORM
210
232
 
211
- gem "weakling", :platforms => :jruby
212
- gem "ruby-debug", :platforms => :mri_18
213
- gem "nokogiri", :platforms => [:mri_18, :jruby]
233
+ If you always want the pure ruby variant of a gem to be chosen over platform
234
+ specific variants, you can use the `force_ruby_platform` option:
214
235
 
215
- All operations involving groups (`bundle install`, `Bundler.setup`,
216
- `Bundler.require`) behave exactly the same as if any groups not
217
- matching the current platform were explicitly excluded.
236
+ gem "ffi", force_ruby_platform: true
237
+
238
+ This can be handy (assuming the pure ruby variant works fine) when:
239
+
240
+ * You're having issues with the platform specific variant.
241
+ * The platform specific variant does not yet support a newer ruby (and thus has
242
+ a `required_ruby_version` upper bound), but you still want your Gemfile{.lock}
243
+ files to resolve under that ruby.
218
244
 
219
245
  ### SOURCE
220
246
 
221
- You can select an alternate Rubygems repository for a gem using the ':source'
247
+ You can select an alternate RubyGems repository for a gem using the ':source'
222
248
  option.
223
249
 
224
- gem "some_internal_gem", :source => "https://gems.example.com"
250
+ gem "some_internal_gem", source: "https://gems.example.com"
225
251
 
226
- This forces the gem to be loaded from this source and ignores any global sources
252
+ This forces the gem to be loaded from this source and ignores the global source
227
253
  declared at the top level of the file. If the gem does not exist in this source,
228
254
  it will not be installed.
229
255
 
230
256
  Bundler will search for child dependencies of this gem by first looking in the
231
257
  source selected for the parent, but if they are not found there, it will fall
232
- back on global sources using the ordering described in [SOURCE PRIORITY][].
258
+ back on the global source.
233
259
 
260
+ **Note about a behavior of the feature deprecated in Bundler 1.13**:
234
261
  Selecting a specific source repository this way also suppresses the ambiguous
235
- gem warning described above in
236
- [GLOBAL SOURCES (#source)](#GLOBAL-SOURCES).
262
+ gem warning described above in [GLOBAL SOURCE](#GLOBAL-SOURCE).
263
+
264
+ Using the `:source` option for an individual gem will also make that source
265
+ available as a possible global source for any other gems which do not specify
266
+ explicit sources. Thus, when adding gems with explicit sources, it is
267
+ recommended that you also ensure all other gems in the Gemfile are using
268
+ explicit sources.
237
269
 
238
270
  ### GIT
239
271
 
@@ -242,11 +274,11 @@ git repository using the `:git` parameter. The repository can be accessed via
242
274
  several protocols:
243
275
 
244
276
  * `HTTP(S)`:
245
- gem "rails", :git => "https://github.com/rails/rails.git"
277
+ gem "rails", git: "https://github.com/rails/rails.git"
246
278
  * `SSH`:
247
- gem "rails", :git => "git@github.com:rails/rails.git"
279
+ gem "rails", git: "git@github.com:rails/rails.git"
248
280
  * `git`:
249
- gem "rails", :git => "git://github.com/rails/rails.git"
281
+ gem "rails", git: "git://github.com/rails/rails.git"
250
282
 
251
283
  If using SSH, the user that you use to run `bundle install` `MUST` have the
252
284
  appropriate keys available in their `$HOME/.ssh`.
@@ -274,7 +306,7 @@ to, a version specifier, if provided, means that the git repository is
274
306
  only valid if the `.gemspec` specifies a version matching the version
275
307
  specifier. If not, bundler will print a warning.
276
308
 
277
- gem "rails", "2.3.8", :git => "https://github.com/rails/rails.git"
309
+ gem "rails", "2.3.8", git: "https://github.com/rails/rails.git"
278
310
  # bundle install will fail, because the .gemspec in the rails
279
311
  # repository's master branch specifies version 3.0.0
280
312
 
@@ -286,9 +318,18 @@ Git repositories support a number of additional options.
286
318
 
287
319
  * `branch`, `tag`, and `ref`:
288
320
  You `MUST` only specify at most one of these options. The default
289
- is `:branch => "master"`
321
+ is `branch: "master"`. For example:
322
+
323
+ gem "rails", git: "https://github.com/rails/rails.git", branch: "5-0-stable"
324
+
325
+ gem "rails", git: "https://github.com/rails/rails.git", tag: "v5.0.0"
326
+
327
+ gem "rails", git: "https://github.com/rails/rails.git", ref: "4aded"
328
+
290
329
  * `submodules`:
291
- Specify `:submodules => true` to cause bundler to expand any
330
+ For reference, a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
331
+ lets you have another git repository within a subfolder of your repository.
332
+ Specify `submodules: true` to cause bundler to expand any
292
333
  submodules included in the git repository
293
334
 
294
335
  If a git repository contains multiple `.gemspecs`, each `.gemspec`
@@ -316,11 +357,11 @@ as an argument, and a block which receives a single argument and interpolates it
316
357
  string to return the full repo address:
317
358
 
318
359
  git_source(:stash){ |repo_name| "https://stash.corp.acme.pl/#{repo_name}.git" }
319
- gem 'rails', :stash => 'forks/rails'
360
+ gem 'rails', stash: 'forks/rails'
320
361
 
321
362
  In addition, if you wish to choose a specific branch:
322
363
 
323
- gem "rails", :stash => "forks/rails", :branch => "branch_name"
364
+ gem "rails", stash: "forks/rails", branch: "branch_name"
324
365
 
325
366
  ### GITHUB
326
367
 
@@ -333,25 +374,33 @@ If the git repository you want to use is hosted on GitHub and is public, you can
333
374
  trailing ".git"), separated by a slash. If both the username and repository name are the
334
375
  same, you can omit one.
335
376
 
336
- gem "rails", :github => "rails/rails"
337
- gem "rails", :github => "rails"
377
+ gem "rails", github: "rails/rails"
378
+ gem "rails", github: "rails"
338
379
 
339
380
  Are both equivalent to
340
381
 
341
- gem "rails", :git => "git://github.com/rails/rails.git"
382
+ gem "rails", git: "https://github.com/rails/rails.git"
342
383
 
343
384
  Since the `github` method is a specialization of `git_source`, it accepts a `:branch` named argument.
344
385
 
386
+ You can also directly pass a pull request URL:
387
+
388
+ gem "rails", github: "https://github.com/rails/rails/pull/43753"
389
+
390
+ Which is equivalent to:
391
+
392
+ gem "rails", github: "rails/rails", branch: "refs/pull/43753/head"
393
+
345
394
  ### GIST
346
395
 
347
- If the git repository you want to use is hosted as a Github Gist and is public, you can use
396
+ If the git repository you want to use is hosted as a GitHub Gist and is public, you can use
348
397
  the :gist shorthand to specify the gist identifier (without the trailing ".git").
349
398
 
350
- gem "the_hatch", :gist => "4815162342"
399
+ gem "the_hatch", gist: "4815162342"
351
400
 
352
401
  Is equivalent to:
353
402
 
354
- gem "the_hatch", :git => "https://gist.github.com/4815162342.git"
403
+ gem "the_hatch", git: "https://gist.github.com/4815162342.git"
355
404
 
356
405
  Since the `gist` method is a specialization of `git_source`, it accepts a `:branch` named argument.
357
406
 
@@ -362,12 +411,12 @@ If the git repository you want to use is hosted on Bitbucket and is public, you
362
411
  trailing ".git"), separated by a slash. If both the username and repository name are the
363
412
  same, you can omit one.
364
413
 
365
- gem "rails", :bitbucket => "rails/rails"
366
- gem "rails", :bitbucket => "rails"
414
+ gem "rails", bitbucket: "rails/rails"
415
+ gem "rails", bitbucket: "rails"
367
416
 
368
417
  Are both equivalent to
369
418
 
370
- gem "rails", :git => "https://rails@bitbucket.org/rails/rails.git"
419
+ gem "rails", git: "https://rails@bitbucket.org/rails/rails.git"
371
420
 
372
421
  Since the `bitbucket` method is a specialization of `git_source`, it accepts a `:branch` named argument.
373
422
 
@@ -385,7 +434,7 @@ version that bundler should use.
385
434
  Unlike `:git`, bundler does not compile C extensions for
386
435
  gems specified as paths.
387
436
 
388
- gem "rails", :path => "vendor/rails"
437
+ gem "rails", path: "vendor/rails"
389
438
 
390
439
  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.
391
440
 
@@ -414,7 +463,7 @@ applied to a group of gems by using block form.
414
463
  gem "sqlite3"
415
464
  end
416
465
 
417
- group :development, :optional => true do
466
+ group :development, optional: true do
418
467
  gem "wirble"
419
468
  gem "faker"
420
469
  end
@@ -427,6 +476,13 @@ In the case of the `git` block form, the `:ref`, `:branch`, `:tag`,
427
476
  and `:submodules` options may be passed to the `git` method, and
428
477
  all gems in the block will inherit those options.
429
478
 
479
+ The presence of a `source` block in a Gemfile also makes that source
480
+ available as a possible global source for any other gems which do not specify
481
+ explicit sources. Thus, when defining source blocks, it is
482
+ recommended that you also ensure all other gems in the Gemfile are using
483
+ explicit sources, either via source blocks or `:source` directives on
484
+ individual gems.
485
+
430
486
  ## INSTALL_IF
431
487
 
432
488
  The `install_if` method allows gems to be installed based on a proc or lambda.
@@ -439,14 +495,19 @@ software is installed or some other conditions are met.
439
495
 
440
496
  ## GEMSPEC
441
497
 
498
+ The [`.gemspec`](http://guides.rubygems.org/specification-reference/) file is where
499
+ you provide metadata about your gem to Rubygems. Some required Gemspec
500
+ attributes include the name, description, and homepage of your gem. This is
501
+ also where you specify the dependencies your gem needs to run.
502
+
442
503
  If you wish to use Bundler to help install dependencies for a gem while it is
443
504
  being developed, use the `gemspec` method to pull in the dependencies listed in
444
505
  the `.gemspec` file.
445
506
 
446
507
  The `gemspec` method adds any runtime dependencies as gem requirements in the
447
508
  default group. It also adds development dependencies as gem requirements in the
448
- `development` group. Finally, it adds a gem requirement on your project (`:path
449
- => '.'`). In conjunction with `Bundler.setup`, this allows you to require project
509
+ `development` group. Finally, it adds a gem requirement on your project (`path:
510
+ '.'`). In conjunction with `Bundler.setup`, this allows you to require project
450
511
  files in your test code as you would if the project were installed as a gem; you
451
512
  need not manipulate the load path manually or require project files via relative
452
513
  paths.
@@ -471,5 +532,7 @@ bundler uses the following priority order:
471
532
  repository declared on the parent. This results in bundler prioritizing the
472
533
  ActiveSupport gem from the Rails git repository over ones from
473
534
  `rubygems.org`
474
- 3. The sources specified via global `source` lines, searching each source in
475
- your `Gemfile` from last added to first added.
535
+ 3. If neither of the above conditions are met, the global source will be used.
536
+ If multiple global sources are specified, they will be prioritized from
537
+ last to first, but this is deprecated since Bundler 1.13, so Bundler prints
538
+ a warning and will abort with an error in the future.
@@ -0,0 +1,29 @@
1
+ Gemfile(5) gemfile.5
2
+ bundle(1) bundle.1
3
+ bundle-add(1) bundle-add.1
4
+ bundle-binstubs(1) bundle-binstubs.1
5
+ bundle-cache(1) bundle-cache.1
6
+ bundle-check(1) bundle-check.1
7
+ bundle-clean(1) bundle-clean.1
8
+ bundle-config(1) bundle-config.1
9
+ bundle-console(1) bundle-console.1
10
+ bundle-doctor(1) bundle-doctor.1
11
+ bundle-exec(1) bundle-exec.1
12
+ bundle-gem(1) bundle-gem.1
13
+ bundle-help(1) bundle-help.1
14
+ bundle-info(1) bundle-info.1
15
+ bundle-init(1) bundle-init.1
16
+ bundle-inject(1) bundle-inject.1
17
+ bundle-install(1) bundle-install.1
18
+ bundle-list(1) bundle-list.1
19
+ bundle-lock(1) bundle-lock.1
20
+ bundle-open(1) bundle-open.1
21
+ bundle-outdated(1) bundle-outdated.1
22
+ bundle-platform(1) bundle-platform.1
23
+ bundle-plugin(1) bundle-plugin.1
24
+ bundle-pristine(1) bundle-pristine.1
25
+ bundle-remove(1) bundle-remove.1
26
+ bundle-show(1) bundle-show.1
27
+ bundle-update(1) bundle-update.1
28
+ bundle-version(1) bundle-version.1
29
+ bundle-viz(1) bundle-viz.1
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ module MatchMetadata
5
+ def matches_current_ruby?
6
+ @required_ruby_version.satisfied_by?(Gem.ruby_version)
7
+ end
8
+
9
+ def matches_current_rubygems?
10
+ @required_rubygems_version.satisfied_by?(Gem.rubygems_version)
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require "bundler/gem_helpers"
2
+
3
+ require_relative "gem_helpers"
3
4
 
4
5
  module Bundler
5
6
  module MatchPlatform
@@ -14,7 +15,6 @@ module Bundler
14
15
  return true if Gem::Platform::RUBY == gemspec_platform
15
16
  return true if local_platform == gemspec_platform
16
17
  gemspec_platform = Gem::Platform.new(gemspec_platform)
17
- return true if GemHelpers.generic(gemspec_platform) === local_platform
18
18
  return true if gemspec_platform === local_platform
19
19
 
20
20
  false
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ module FetchMetadata
5
+ # A fallback is included because the original version of the specification
6
+ # API didn't include that field, so some marshalled specs in the index have it
7
+ # set to +nil+.
8
+ def matches_current_ruby?
9
+ @required_ruby_version ||= _remote_specification.required_ruby_version || Gem::Requirement.default
10
+
11
+ super
12
+ end
13
+
14
+ def matches_current_rubygems?
15
+ # A fallback is included because the original version of the specification
16
+ # API didn't include that field, so some marshalled specs in the index have it
17
+ # set to +nil+.
18
+ @required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
19
+
20
+ super
21
+ end
22
+ end
23
+
24
+ module MatchRemoteMetadata
25
+ include MatchMetadata
26
+
27
+ prepend FetchMetadata
28
+ end
29
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "socket"
3
4
 
4
5
  module Bundler
@@ -37,15 +38,17 @@ module Bundler
37
38
  mirror = if config.all?
38
39
  @all
39
40
  else
40
- (@mirrors[config.uri] = @mirrors[config.uri] || Mirror.new)
41
+ @mirrors[config.uri] ||= Mirror.new
41
42
  end
42
43
  config.update_mirror(mirror)
43
44
  end
44
45
 
45
- private
46
+ private
46
47
 
47
48
  def fetch_valid_mirror_for(uri)
48
- mirror = (@mirrors[URI(uri.to_s.downcase)] || @mirrors[URI(uri.to_s).host] || Mirror.new(uri)).validate!(@prober)
49
+ downcased = uri.to_s.downcase
50
+ mirror = @mirrors[downcased] || @mirrors[Bundler::URI(downcased).host] || Mirror.new(uri)
51
+ mirror.validate!(@prober)
49
52
  mirror = Mirror.new(uri) unless mirror.valid?
50
53
  mirror
51
54
  end
@@ -71,7 +74,7 @@ module Bundler
71
74
  @uri = if uri.nil?
72
75
  nil
73
76
  else
74
- URI(uri.to_s)
77
+ Bundler::URI(uri.to_s)
75
78
  end
76
79
  @valid = nil
77
80
  end
@@ -117,13 +120,13 @@ module Bundler
117
120
 
118
121
  def initialize(config_line, value)
119
122
  uri, fallback =
120
- config_line.match(%r{^mirror\.(all|.+?)(\.fallback_timeout)?\/?$}).captures
123
+ config_line.match(%r{\Amirror\.(all|.+?)(\.fallback_timeout)?\/?\z}).captures
121
124
  @fallback = !fallback.nil?
122
125
  @all = false
123
126
  if uri == "all"
124
127
  @all = true
125
128
  else
126
- @uri = URI(uri).absolute? ? Settings.normalize_uri(uri) : uri
129
+ @uri = Bundler::URI(uri).absolute? ? Settings.normalize_uri(uri) : uri
127
130
  end
128
131
  @value = value
129
132
  end
@@ -145,17 +148,15 @@ module Bundler
145
148
  class TCPSocketProbe
146
149
  def replies?(mirror)
147
150
  MirrorSockets.new(mirror).any? do |socket, address, timeout|
148
- begin
149
- socket.connect_nonblock(address)
150
- rescue Errno::EINPROGRESS
151
- wait_for_writtable_socket(socket, address, timeout)
152
- rescue # Connection failed somehow, again
153
- false
154
- end
151
+ socket.connect_nonblock(address)
152
+ rescue Errno::EINPROGRESS
153
+ wait_for_writtable_socket(socket, address, timeout)
154
+ rescue RuntimeError # Connection failed somehow, again
155
+ false
155
156
  end
156
157
  end
157
158
 
158
- private
159
+ private
159
160
 
160
161
  def wait_for_writtable_socket(socket, address, timeout)
161
162
  if IO.select(nil, [socket], nil, timeout)
@@ -169,7 +170,7 @@ module Bundler
169
170
  socket.connect_nonblock(address)
170
171
  rescue Errno::EISCONN
171
172
  true
172
- rescue # Connection failed
173
+ rescue StandardError # Connection failed
173
174
  false
174
175
  end
175
176
  end