If bundle install is run before bootboot has been installed, Gemfile_next.lock is not correctly synced.
There is currently a bug (which is reproducible by running the test included on master) where if the Gemfile is changed before bootboot has been installed, Gemfile_next.lock doesn't get updated. In other words, if someone clones a project that already uses bootboot and has a Gemfile_next.lock, then they add a gem to Gemfile without first running bundle install, when they then run bundle install (for the first time), the added gem will not appear in Gemfile_next.lock. The issue is that Bundler expects to be able to load plugins.rb multiple times, first in register_plugin and again in load_plugin and it erases state in between, but bootboot uses require in plugins.rb so the hooks are removed in register_plugin but not re-added in load_plugin since require does not reload bootboot.rb. The sequence diagrams below demonstrate simplified "before" and "after" call sequences.
If
bundle install
is run before bootboot has been installed,Gemfile_next.lock
is not correctly synced.There is currently a bug (which is reproducible by running the test included on
master
) where if theGemfile
is changed beforebootboot
has been installed,Gemfile_next.lock
doesn't get updated. In other words, if someone clones a project that already usesbootboot
and has aGemfile_next.lock
, then they add a gem toGemfile
without first runningbundle install
, when they then runbundle install
(for the first time), the added gem will not appear inGemfile_next.lock
. The issue is that Bundler expects to be able to loadplugins.rb
multiple times, first inregister_plugin
and again inload_plugin
and it erases state in between, butbootboot
usesrequire
inplugins.rb
so the hooks are removed inregister_plugin
but not re-added inload_plugin
sincerequire
does not reloadbootboot.rb
. The sequence diagrams below demonstrate simplified "before" and "after" call sequences.Before
After