bundler 1.17.0.pre.1 → 1.17.0.pre.2

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

Potentially problematic release.


This version of bundler might be problematic. Click here for more details.

Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -1
  3. data/README.md +1 -1
  4. data/bundler.gemspec +1 -1
  5. data/lib/bundler.rb +28 -10
  6. data/lib/bundler/build_metadata.rb +2 -2
  7. data/lib/bundler/cli.rb +33 -5
  8. data/lib/bundler/cli/binstubs.rb +8 -2
  9. data/lib/bundler/cli/remove.rb +18 -0
  10. data/lib/bundler/definition.rb +18 -13
  11. data/lib/bundler/dependency.rb +2 -2
  12. data/lib/bundler/dsl.rb +18 -2
  13. data/lib/bundler/endpoint_specification.rb +1 -1
  14. data/lib/bundler/env.rb +8 -6
  15. data/lib/bundler/fetcher.rb +1 -1
  16. data/lib/bundler/gem_helper.rb +1 -1
  17. data/lib/bundler/injector.rb +156 -8
  18. data/lib/bundler/installer/gem_installer.rb +1 -1
  19. data/lib/bundler/installer/parallel_installer.rb +1 -1
  20. data/lib/bundler/mirror.rb +2 -2
  21. data/lib/bundler/plugin.rb +5 -5
  22. data/lib/bundler/plugin/index.rb +1 -1
  23. data/lib/bundler/resolver/spec_group.rb +0 -4
  24. data/lib/bundler/runtime.rb +1 -1
  25. data/lib/bundler/settings.rb +1 -1
  26. data/lib/bundler/shared_helpers.rb +6 -0
  27. data/lib/bundler/source/metadata.rb +1 -1
  28. data/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -0
  29. data/lib/bundler/version.rb +1 -1
  30. data/man/bundle-add.1 +1 -1
  31. data/man/bundle-add.1.txt +1 -1
  32. data/man/bundle-binstubs.1 +1 -1
  33. data/man/bundle-binstubs.1.txt +1 -1
  34. data/man/bundle-check.1 +1 -1
  35. data/man/bundle-check.1.txt +1 -1
  36. data/man/bundle-clean.1 +1 -1
  37. data/man/bundle-clean.1.txt +1 -1
  38. data/man/bundle-config.1 +1 -1
  39. data/man/bundle-config.1.txt +1 -1
  40. data/man/bundle-doctor.1 +1 -1
  41. data/man/bundle-doctor.1.txt +1 -1
  42. data/man/bundle-exec.1 +1 -1
  43. data/man/bundle-exec.1.txt +1 -1
  44. data/man/bundle-gem.1 +1 -1
  45. data/man/bundle-gem.1.txt +1 -1
  46. data/man/bundle-info.1 +1 -1
  47. data/man/bundle-info.1.txt +1 -1
  48. data/man/bundle-init.1 +1 -1
  49. data/man/bundle-init.1.txt +1 -1
  50. data/man/bundle-inject.1 +1 -1
  51. data/man/bundle-inject.1.txt +1 -1
  52. data/man/bundle-install.1 +6 -3
  53. data/man/bundle-install.1.txt +118 -107
  54. data/man/bundle-install.ronn +12 -3
  55. data/man/bundle-list.1 +1 -1
  56. data/man/bundle-list.1.txt +1 -1
  57. data/man/bundle-lock.1 +1 -1
  58. data/man/bundle-lock.1.txt +1 -1
  59. data/man/bundle-open.1 +1 -1
  60. data/man/bundle-open.1.txt +1 -1
  61. data/man/bundle-outdated.1 +1 -1
  62. data/man/bundle-outdated.1.txt +1 -1
  63. data/man/bundle-package.1 +1 -1
  64. data/man/bundle-package.1.txt +1 -1
  65. data/man/bundle-platform.1 +1 -1
  66. data/man/bundle-platform.1.txt +1 -1
  67. data/man/bundle-pristine.1 +1 -1
  68. data/man/bundle-pristine.1.txt +1 -1
  69. data/man/bundle-remove.1 +31 -0
  70. data/man/bundle-remove.1.txt +34 -0
  71. data/man/bundle-remove.ronn +23 -0
  72. data/man/bundle-show.1 +1 -1
  73. data/man/bundle-show.1.txt +1 -1
  74. data/man/bundle-update.1 +11 -7
  75. data/man/bundle-update.1.txt +71 -68
  76. data/man/bundle-update.ronn +11 -7
  77. data/man/bundle-viz.1 +1 -1
  78. data/man/bundle-viz.1.txt +1 -1
  79. data/man/bundle.1 +1 -1
  80. data/man/bundle.1.txt +1 -1
  81. data/man/gemfile.5 +1 -1
  82. data/man/gemfile.5.txt +1 -1
  83. data/man/index.txt +1 -0
  84. metadata +7 -2
@@ -30,4 +30,4 @@ OPTIONS
30
30
 
31
31
 
32
32
 
33
- September 2018 BUNDLE-CHECK(1)
33
+ October 2018 BUNDLE-CHECK(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -23,4 +23,4 @@ OPTIONS
23
23
 
24
24
 
25
25
 
26
- September 2018 BUNDLE-CLEAN(1)
26
+ October 2018 BUNDLE-CLEAN(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options
@@ -510,4 +510,4 @@ CREDENTIALS FOR GEM SOURCES
510
510
 
511
511
 
512
512
 
513
- September 2018 BUNDLE-CONFIG(1)
513
+ October 2018 BUNDLE-CONFIG(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-DOCTOR" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
@@ -41,4 +41,4 @@ OPTIONS
41
41
 
42
42
 
43
43
 
44
- September 2018 BUNDLE-DOCTOR(1)
44
+ October 2018 BUNDLE-DOCTOR(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-EXEC" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-exec\fR \- Execute a command in the context of the bundle
@@ -175,4 +175,4 @@ RUBYGEMS PLUGINS
175
175
 
176
176
 
177
177
 
178
- September 2018 BUNDLE-EXEC(1)
178
+ October 2018 BUNDLE-EXEC(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-GEM" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
@@ -88,4 +88,4 @@ SEE ALSO
88
88
 
89
89
 
90
90
 
91
- September 2018 BUNDLE-GEM(1)
91
+ October 2018 BUNDLE-GEM(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -18,4 +18,4 @@ OPTIONS
18
18
 
19
19
 
20
20
 
21
- September 2018 BUNDLE-INFO(1)
21
+ October 2018 BUNDLE-INFO(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -31,4 +31,4 @@ SEE ALSO
31
31
 
32
32
 
33
33
 
34
- September 2018 BUNDLE-INIT(1)
34
+ October 2018 BUNDLE-INIT(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -29,4 +29,4 @@ DESCRIPTION
29
29
 
30
30
 
31
31
 
32
- September 2018 BUNDLE-INJECT(1)
32
+ October 2018 BUNDLE-INJECT(1)
@@ -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" "September 2018" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "October 2018" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -35,7 +35,7 @@ In \fIdeployment mode\fR, Bundler will \'roll\-out\' the bundle for production o
35
35
  .
36
36
  .TP
37
37
  \fB\-\-force\fR
38
- Force download every gem, even if the required versions are already available locally\.
38
+ Force download every gem, even if the required versions are already available locally\. \fB\-\-redownload\fR is an alias of this option\.
39
39
  .
40
40
  .TP
41
41
  \fB\-\-frozen\fR
@@ -221,7 +221,10 @@ Bundler uses this file in all subsequent calls to \fBbundle install\fR, which gu
221
221
  Because of the way dependency resolution works, even a seemingly small change (for instance, an update to a point\-release of a dependency of a gem in your Gemfile(5)) can result in radically different gems being needed to satisfy all dependencies\.
222
222
  .
223
223
  .P
224
- As a result, you \fBSHOULD\fR check your \fBGemfile\.lock\fR into version control\. If you do not, every machine that checks out your repository (including your production server) will resolve all dependencies again, which will result in different versions of third\-party code being used if \fBany\fR of the gems in the Gemfile(5) or any of their dependencies have been updated\.
224
+ As a result, you \fBSHOULD\fR check your \fBGemfile\.lock\fR into version control, in both applications and gems\. If you do not, every machine that checks out your repository (including your production server) will resolve all dependencies again, which will result in different versions of third\-party code being used if \fBany\fR of the gems in the Gemfile(5) or any of their dependencies have been updated\.
225
+ .
226
+ .P
227
+ When Bundler first shipped, the \fBGemfile\.lock\fR was included in the \fB\.gitignore\fR file included with generated gems\. Over time, however, it became clear that this practice forces the pain of broken dependencies onto new contributors, while leaving existing contributors potentially unaware of the problem\. Since \fBbundle install\fR is usually the first step towards a contribution, the pain of broken dependencies would discourage new contributors from contributing\. As a result, we have revised our guidance for gem authors to now recommend checking in the lock for gems\.
225
228
  .
226
229
  .SH "CONSERVATIVE UPDATING"
227
230
  When you make a change to the Gemfile(5) and then run \fBbundle install\fR, Bundler will update only the gems that you modified\.
@@ -54,55 +54,56 @@ OPTIONS
54
54
 
55
55
  --force
56
56
  Force download every gem, even if the required versions are
57
- already available locally.
57
+ already available locally. --redownload is an alias of this
58
+ option.
58
59
 
59
60
  --frozen
60
- Do not allow the Gemfile.lock to be updated after this install.
61
- Exits non-zero if there are going to be changes to the Gem-
61
+ Do not allow the Gemfile.lock to be updated after this install.
62
+ Exits non-zero if there are going to be changes to the Gem-
62
63
  file.lock.
63
64
 
64
65
  --full-index
65
66
  Bundler will not call Rubygems' API endpoint (default) but down-
66
67
  load and cache a (currently big) index file of all gems. Perfor-
67
- mance can be improved for large bundles that seldom change by
68
+ mance can be improved for large bundles that seldom change by
68
69
  enabling this option.
69
70
 
70
71
  --gemfile=<gemfile>
71
- The location of the Gemfile(5) which Bundler should use. This
72
- defaults to a Gemfile(5) in the current working directory. In
72
+ The location of the Gemfile(5) which Bundler should use. This
73
+ defaults to a Gemfile(5) in the current working directory. In
73
74
  general, Bundler will assume that the location of the Gemfile(5)
74
75
  is also the project's root and will try to find Gemfile.lock and
75
76
  vendor/cache relative to this location.
76
77
 
77
78
  --jobs=[<number>], -j[<number>]
78
- The maximum number of parallel download and install jobs. The
79
+ The maximum number of parallel download and install jobs. The
79
80
  default is 1.
80
81
 
81
82
  --local
82
83
  Do not attempt to connect to rubygems.org. Instead, Bundler will
83
- use the gems already present in Rubygems' cache or in ven-
84
- dor/cache. Note that if a appropriate platform-specific gem
84
+ use the gems already present in Rubygems' cache or in ven-
85
+ dor/cache. Note that if a appropriate platform-specific gem
85
86
  exists on rubygems.org it will not be found.
86
87
 
87
88
  --no-cache
88
- Do not update the cache in vendor/cache with the newly bundled
89
- gems. This does not remove any gems in the cache but keeps the
89
+ Do not update the cache in vendor/cache with the newly bundled
90
+ gems. This does not remove any gems in the cache but keeps the
90
91
  newly bundled gems from being cached during the install.
91
92
 
92
93
  --no-prune
93
- Don't remove stale gems from the cache when the installation
94
+ Don't remove stale gems from the cache when the installation
94
95
  finishes.
95
96
 
96
97
  --path=<path>
97
- The location to install the specified gems to. This defaults to
98
- Rubygems' setting. Bundler shares this location with Rubygems,
99
- gem install ... will have gem installed there, too. Therefore,
100
- gems installed without a --path ... setting will show up by
98
+ The location to install the specified gems to. This defaults to
99
+ Rubygems' setting. Bundler shares this location with Rubygems,
100
+ gem install ... will have gem installed there, too. Therefore,
101
+ gems installed without a --path ... setting will show up by
101
102
  calling gem list. Accordingly, gems installed to other locations
102
103
  will not get listed.
103
104
 
104
105
  --quiet
105
- Do not print progress information to the standard output.
106
+ Do not print progress information to the standard output.
106
107
  Instead, Bundler will exit using a status code ($?).
107
108
 
108
109
  --retry=[<number>]
@@ -110,34 +111,34 @@ OPTIONS
110
111
 
111
112
  --shebang=<ruby-executable>
112
113
  Uses the specified ruby executable (usually ruby) to execute the
113
- scripts created with --binstubs. In addition, if you use --bin-
114
- stubs together with --shebang jruby these executables will be
114
+ scripts created with --binstubs. In addition, if you use --bin-
115
+ stubs together with --shebang jruby these executables will be
115
116
  changed to execute jruby instead.
116
117
 
117
118
  --standalone[=<list>]
118
- Makes a bundle that can work without depending on Rubygems or
119
- Bundler at runtime. A space separated list of groups to install
120
- has to be specified. Bundler creates a directory named bundle
119
+ Makes a bundle that can work without depending on Rubygems or
120
+ Bundler at runtime. A space separated list of groups to install
121
+ has to be specified. Bundler creates a directory named bundle
121
122
  and installs the bundle there. It also generates a bun-
122
- dle/bundler/setup.rb file to replace Bundler's own setup in the
123
- manner required. Using this option implicitly sets path, which
123
+ dle/bundler/setup.rb file to replace Bundler's own setup in the
124
+ manner required. Using this option implicitly sets path, which
124
125
  is a [remembered option][REMEMBERED OPTIONS].
125
126
 
126
127
  --system
127
- Installs the gems specified in the bundle to the system's
128
- Rubygems location. This overrides any previous configuration of
128
+ Installs the gems specified in the bundle to the system's
129
+ Rubygems location. This overrides any previous configuration of
129
130
  --path.
130
131
 
131
132
  --trust-policy=[<policy>]
132
- Apply the Rubygems security policy policy, where policy is one
133
- of HighSecurity, MediumSecurity, LowSecurity, AlmostNoSecurity,
133
+ Apply the Rubygems security policy policy, where policy is one
134
+ of HighSecurity, MediumSecurity, LowSecurity, AlmostNoSecurity,
134
135
  or NoSecurity. For more details, please see the Rubygems signing
135
136
  documentation linked below in SEE ALSO.
136
137
 
137
138
  --with=<list>
138
139
  A space-separated list of groups referencing gems to install. If
139
- an optional group is given it is installed. If a group is given
140
- that is in the remembered list of groups given to --without, it
140
+ an optional group is given it is installed. If a group is given
141
+ that is in the remembered list of groups given to --without, it
141
142
  is removed from that list.
142
143
 
143
144
  --without=<list>
@@ -147,54 +148,54 @@ OPTIONS
147
148
 
148
149
  DEPLOYMENT MODE
149
150
  Bundler's defaults are optimized for development. To switch to defaults
150
- optimized for deployment and for CI, use the --deployment flag. Do not
151
- activate deployment mode on development machines, as it will cause an
151
+ optimized for deployment and for CI, use the --deployment flag. Do not
152
+ activate deployment mode on development machines, as it will cause an
152
153
  error when the Gemfile(5) is modified.
153
154
 
154
155
  1. A Gemfile.lock is required.
155
156
 
156
157
  To ensure that the same versions of the gems you developed with and
157
- tested with are also used in deployments, a Gemfile.lock is
158
+ tested with are also used in deployments, a Gemfile.lock is
158
159
  required.
159
160
 
160
- This is mainly to ensure that you remember to check your Gem-
161
+ This is mainly to ensure that you remember to check your Gem-
161
162
  file.lock into version control.
162
163
 
163
164
  2. The Gemfile.lock must be up to date
164
165
 
165
- In development, you can modify your Gemfile(5) and re-run bundle
166
+ In development, you can modify your Gemfile(5) and re-run bundle
166
167
  install to conservatively update your Gemfile.lock snapshot.
167
168
 
168
- In deployment, your Gemfile.lock should be up-to-date with changes
169
+ In deployment, your Gemfile.lock should be up-to-date with changes
169
170
  made in your Gemfile(5).
170
171
 
171
- 3. Gems are installed to vendor/bundle not your default system loca-
172
+ 3. Gems are installed to vendor/bundle not your default system loca-
172
173
  tion
173
174
 
174
- In development, it's convenient to share the gems used in your
175
- application with other applications and other scripts that run on
175
+ In development, it's convenient to share the gems used in your
176
+ application with other applications and other scripts that run on
176
177
  the system.
177
178
 
178
- In deployment, isolation is a more important default. In addition,
179
- the user deploying the application may not have permission to
180
- install gems to the system, or the web server may not have permis-
179
+ In deployment, isolation is a more important default. In addition,
180
+ the user deploying the application may not have permission to
181
+ install gems to the system, or the web server may not have permis-
181
182
  sion to read them.
182
183
 
183
- As a result, bundle install --deployment installs gems to the ven-
184
- dor/bundle directory in the application. This may be overridden
184
+ As a result, bundle install --deployment installs gems to the ven-
185
+ dor/bundle directory in the application. This may be overridden
185
186
  using the --path option.
186
187
 
187
188
 
188
189
 
189
190
  SUDO USAGE
190
- By default, Bundler installs gems to the same location as gem install.
191
+ By default, Bundler installs gems to the same location as gem install.
191
192
 
192
- In some cases, that location may not be writable by your Unix user. In
193
+ In some cases, that location may not be writable by your Unix user. In
193
194
  that case, Bundler will stage everything in a temporary directory, then
194
- ask you for your sudo password in order to copy the gems into their
195
+ ask you for your sudo password in order to copy the gems into their
195
196
  system location.
196
197
 
197
- From your perspective, this is identical to installing the gems
198
+ From your perspective, this is identical to installing the gems
198
199
  directly into the system.
199
200
 
200
201
  You should never use sudo bundle install. This is because several other
@@ -208,36 +209,36 @@ SUDO USAGE
208
209
 
209
210
 
210
211
 
211
- Of these three, the first two could theoretically be performed by
212
- chowning the resulting files to $SUDO_USER. The third, however, can
213
- only be performed by invoking the git command as the current user.
214
- Therefore, git gems are downloaded and installed into ~/.bundle rather
212
+ Of these three, the first two could theoretically be performed by
213
+ chowning the resulting files to $SUDO_USER. The third, however, can
214
+ only be performed by invoking the git command as the current user.
215
+ Therefore, git gems are downloaded and installed into ~/.bundle rather
215
216
  than $GEM_HOME or $BUNDLE_PATH.
216
217
 
217
- As a result, you should run bundle install as the current user, and
218
+ As a result, you should run bundle install as the current user, and
218
219
  Bundler will ask for your password if it is needed to put the gems into
219
220
  their final location.
220
221
 
221
222
  INSTALLING GROUPS
222
- By default, bundle install will install all gems in all groups in your
223
+ By default, bundle install will install all gems in all groups in your
223
224
  Gemfile(5), except those declared for a different platform.
224
225
 
225
- However, you can explicitly tell Bundler to skip installing certain
226
- groups with the --without option. This option takes a space-separated
226
+ However, you can explicitly tell Bundler to skip installing certain
227
+ groups with the --without option. This option takes a space-separated
227
228
  list of groups.
228
229
 
229
- While the --without option will skip installing the gems in the speci-
230
- fied groups, it will still download those gems and use them to resolve
230
+ While the --without option will skip installing the gems in the speci-
231
+ fied groups, it will still download those gems and use them to resolve
231
232
  the dependencies of every gem in your Gemfile(5).
232
233
 
233
234
  This is so that installing a different set of groups on another machine
234
- (such as a production server) will not change the gems and versions
235
+ (such as a production server) will not change the gems and versions
235
236
  that you have already developed and tested against.
236
237
 
237
238
  Bundler offers a rock-solid guarantee that the third-party code you are
238
239
  running in development and testing is also the third-party code you are
239
- running in production. You can choose to exclude some of that code in
240
- different environments, but you will never be caught flat-footed by
240
+ running in production. You can choose to exclude some of that code in
241
+ different environments, but you will never be caught flat-footed by
241
242
  different versions of third-party code being used in different environ-
242
243
  ments.
243
244
 
@@ -255,53 +256,63 @@ INSTALLING GROUPS
255
256
 
256
257
 
257
258
 
258
- In this case, sinatra depends on any version of Rack (>= 1.0), while
259
+ In this case, sinatra depends on any version of Rack (>= 1.0), while
259
260
  rack-perftools-profiler depends on 1.x (~> 1.0).
260
261
 
261
- When you run bundle install --without production in development, we
262
- look at the dependencies of rack-perftools-profiler as well. That way,
263
- you do not spend all your time developing against Rack 2.0, using new
264
- APIs unavailable in Rack 1.x, only to have Bundler switch to Rack 1.2
262
+ When you run bundle install --without production in development, we
263
+ look at the dependencies of rack-perftools-profiler as well. That way,
264
+ you do not spend all your time developing against Rack 2.0, using new
265
+ APIs unavailable in Rack 1.x, only to have Bundler switch to Rack 1.2
265
266
  when the production group is used.
266
267
 
267
- This should not cause any problems in practice, because we do not
268
- attempt to install the gems in the excluded groups, and only evaluate
268
+ This should not cause any problems in practice, because we do not
269
+ attempt to install the gems in the excluded groups, and only evaluate
269
270
  as part of the dependency resolution process.
270
271
 
271
- This also means that you cannot include different versions of the same
272
- gem in different groups, because doing so would result in different
272
+ This also means that you cannot include different versions of the same
273
+ gem in different groups, because doing so would result in different
273
274
  sets of dependencies used in development and production. Because of the
274
- vagaries of the dependency resolution process, this usually affects
275
- more than the gems you list in your Gemfile(5), and can (surprisingly)
275
+ vagaries of the dependency resolution process, this usually affects
276
+ more than the gems you list in your Gemfile(5), and can (surprisingly)
276
277
  radically change the gems you are using.
277
278
 
278
279
  THE GEMFILE.LOCK
279
- When you run bundle install, Bundler will persist the full names and
280
- versions of all gems that you used (including dependencies of the gems
280
+ When you run bundle install, Bundler will persist the full names and
281
+ versions of all gems that you used (including dependencies of the gems
281
282
  specified in the Gemfile(5)) into a file called Gemfile.lock.
282
283
 
283
284
  Bundler uses this file in all subsequent calls to bundle install, which
284
285
  guarantees that you always use the same exact code, even as your appli-
285
286
  cation moves across machines.
286
287
 
287
- Because of the way dependency resolution works, even a seemingly small
288
+ Because of the way dependency resolution works, even a seemingly small
288
289
  change (for instance, an update to a point-release of a dependency of a
289
- gem in your Gemfile(5)) can result in radically different gems being
290
+ gem in your Gemfile(5)) can result in radically different gems being
290
291
  needed to satisfy all dependencies.
291
292
 
292
- As a result, you SHOULD check your Gemfile.lock into version control.
293
- If you do not, every machine that checks out your repository (including
294
- your production server) will resolve all dependencies again, which will
295
- result in different versions of third-party code being used if any of
296
- the gems in the Gemfile(5) or any of their dependencies have been
297
- updated.
293
+ As a result, you SHOULD check your Gemfile.lock into version control,
294
+ in both applications and gems. If you do not, every machine that checks
295
+ out your repository (including your production server) will resolve all
296
+ dependencies again, which will result in different versions of
297
+ third-party code being used if any of the gems in the Gemfile(5) or any
298
+ of their dependencies have been updated.
299
+
300
+ When Bundler first shipped, the Gemfile.lock was included in the .git-
301
+ ignore file included with generated gems. Over time, however, it became
302
+ clear that this practice forces the pain of broken dependencies onto
303
+ new contributors, while leaving existing contributors potentially
304
+ unaware of the problem. Since bundle install is usually the first step
305
+ towards a contribution, the pain of broken dependencies would discour-
306
+ age new contributors from contributing. As a result, we have revised
307
+ our guidance for gem authors to now recommend checking in the lock for
308
+ gems.
298
309
 
299
310
  CONSERVATIVE UPDATING
300
- When you make a change to the Gemfile(5) and then run bundle install,
311
+ When you make a change to the Gemfile(5) and then run bundle install,
301
312
  Bundler will update only the gems that you modified.
302
313
 
303
- In other words, if a gem that you did not modify worked before you
304
- called bundle install, it will continue to use the exact same versions
314
+ In other words, if a gem that you did not modify worked before you
315
+ called bundle install, it will continue to use the exact same versions
305
316
  of all dependencies as it used before the update.
306
317
 
307
318
  Let's take a look at an example. Here's your original Gemfile(5):
@@ -315,13 +326,13 @@ CONSERVATIVE UPDATING
315
326
 
316
327
 
317
328
 
318
- In this case, both actionpack and activemerchant depend on activesup-
319
- port. The actionpack gem depends on activesupport 2.3.8 and rack ~>
320
- 1.1.0, while the activemerchant gem depends on activesupport >= 2.3.2,
329
+ In this case, both actionpack and activemerchant depend on activesup-
330
+ port. The actionpack gem depends on activesupport 2.3.8 and rack ~>
331
+ 1.1.0, while the activemerchant gem depends on activesupport >= 2.3.2,
321
332
  braintree >= 2.0.0, and builder >= 2.0.0.
322
333
 
323
- When the dependencies are first resolved, Bundler will select
324
- activesupport 2.3.8, which satisfies the requirements of both gems in
334
+ When the dependencies are first resolved, Bundler will select
335
+ activesupport 2.3.8, which satisfies the requirements of both gems in
325
336
  your Gemfile(5).
326
337
 
327
338
  Next, you modify your Gemfile(5) to:
@@ -335,44 +346,44 @@ CONSERVATIVE UPDATING
335
346
 
336
347
 
337
348
 
338
- The actionpack 3.0.0.rc gem has a number of new dependencies, and
339
- updates the activesupport dependency to = 3.0.0.rc and the rack depen-
349
+ The actionpack 3.0.0.rc gem has a number of new dependencies, and
350
+ updates the activesupport dependency to = 3.0.0.rc and the rack depen-
340
351
  dency to ~> 1.2.1.
341
352
 
342
- When you run bundle install, Bundler notices that you changed the
343
- actionpack gem, but not the activemerchant gem. It evaluates the gems
353
+ When you run bundle install, Bundler notices that you changed the
354
+ actionpack gem, but not the activemerchant gem. It evaluates the gems
344
355
  currently being used to satisfy its requirements:
345
356
 
346
357
  activesupport 2.3.8
347
- also used to satisfy a dependency in activemerchant, which is
358
+ also used to satisfy a dependency in activemerchant, which is
348
359
  not being updated
349
360
 
350
361
  rack ~> 1.1.0
351
362
  not currently being used to satisfy another dependency
352
363
 
353
- Because you did not explicitly ask to update activemerchant, you would
354
- not expect it to suddenly stop working after updating actionpack. How-
355
- ever, satisfying the new activesupport 3.0.0.rc dependency of action-
364
+ Because you did not explicitly ask to update activemerchant, you would
365
+ not expect it to suddenly stop working after updating actionpack. How-
366
+ ever, satisfying the new activesupport 3.0.0.rc dependency of action-
356
367
  pack requires updating one of its dependencies.
357
368
 
358
- Even though activemerchant declares a very loose dependency that theo-
359
- retically matches activesupport 3.0.0.rc, Bundler treats gems in your
360
- Gemfile(5) that have not changed as an atomic unit together with their
369
+ Even though activemerchant declares a very loose dependency that theo-
370
+ retically matches activesupport 3.0.0.rc, Bundler treats gems in your
371
+ Gemfile(5) that have not changed as an atomic unit together with their
361
372
  dependencies. In this case, the activemerchant dependency is treated as
362
- activemerchant 1.7.1 + activesupport 2.3.8, so bundle install will
373
+ activemerchant 1.7.1 + activesupport 2.3.8, so bundle install will
363
374
  report that it cannot update actionpack.
364
375
 
365
376
  To explicitly update actionpack, including its dependencies which other
366
- gems in the Gemfile(5) still depend on, run bundle update actionpack
377
+ gems in the Gemfile(5) still depend on, run bundle update actionpack
367
378
  (see bundle update(1)).
368
379
 
369
- Summary: In general, after making a change to the Gemfile(5) , you
370
- should first try to run bundle install, which will guarantee that no
380
+ Summary: In general, after making a change to the Gemfile(5) , you
381
+ should first try to run bundle install, which will guarantee that no
371
382
  other gem in the Gemfile(5) is impacted by the change. If that does not
372
383
  work, run bundle update(1) bundle-update.1.html.
373
384
 
374
385
  SEE ALSO
375
- o Gem install docs
386
+ o Gem install docs
376
387
  http://guides.rubygems.org/rubygems-basics/#installing-gems
377
388
 
378
389
  o Rubygems signing docs http://guides.rubygems.org/security/
@@ -382,4 +393,4 @@ SEE ALSO
382
393
 
383
394
 
384
395
 
385
- September 2018 BUNDLE-INSTALL(1)
396
+ October 2018 BUNDLE-INSTALL(1)