diff options
author | Bundlerbot <bot@bundler.io> | 2019-11-29 20:07:40 +0000 |
---|---|---|
committer | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-12-13 20:18:27 +0100 |
commit | fc867e3f1c58b0dc84d3b4446f62f73d8ab01af6 (patch) | |
tree | 2aff7bccaa3d311bd00d50a4048bb6f0f558c069 /lib | |
parent | bd0111aae3a516a34d33a642c2e8424bc50f1604 (diff) | |
download | bundler-fc867e3f1c58b0dc84d3b4446f62f73d8ab01af6.tar.gz |
Merge #7418
7418: Restore previous BUNDLE_GEMFILE in bundler/inline r=deivid-rodriguez a=fatkodima
[Without spacing changes](https://github.com/bundler/bundler/pull/7418/files?w=1)
Closes #7159
Co-authored-by: fatkodima <fatkodima123@gmail.com>
(cherry picked from commit 4367f9ada53f72537309987772f48d357bbd5e72)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/inline.rb | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/lib/bundler/inline.rb b/lib/bundler/inline.rb index 152d7d3f60..5b2ddb7db6 100644 --- a/lib/bundler/inline.rb +++ b/lib/bundler/inline.rb @@ -37,43 +37,48 @@ def gemfile(install = false, options = {}, &gemfile) ui.level = "silent" if opts.delete(:quiet) raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty? - old_root = Bundler.method(:root) - bundler_module = class << Bundler; self; end - bundler_module.send(:remove_method, :root) - def Bundler.root - Bundler::SharedHelpers.pwd.expand_path - end - Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile" - - Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins? - builder = Bundler::Dsl.new - builder.instance_eval(&gemfile) + begin + old_root = Bundler.method(:root) + bundler_module = class << Bundler; self; end + bundler_module.send(:remove_method, :root) + def Bundler.root + Bundler::SharedHelpers.pwd.expand_path + end + old_gemfile = ENV["BUNDLE_GEMFILE"] + Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile" - Bundler.settings.temporary(:frozen => false) do - definition = builder.to_definition(nil, true) - def definition.lock(*); end - definition.validate_runtime! + Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins? + builder = Bundler::Dsl.new + builder.instance_eval(&gemfile) - missing_specs = proc do - definition.missing_specs? - end + Bundler.settings.temporary(:frozen => false) do + definition = builder.to_definition(nil, true) + def definition.lock(*); end + definition.validate_runtime! - Bundler.ui = install ? ui : Bundler::UI::Silent.new - if install || missing_specs.call - Bundler.settings.temporary(:inline => true, :disable_platform_warnings => true) do - installer = Bundler::Installer.install(Bundler.root, definition, :system => true) - installer.post_install_messages.each do |name, message| - Bundler.ui.info "Post-install message from #{name}:\n#{message}" + Bundler.ui = install ? ui : Bundler::UI::Silent.new + if install || definition.missing_specs? + Bundler.settings.temporary(:inline => true, :disable_platform_warnings => true) do + installer = Bundler::Installer.install(Bundler.root, definition, :system => true) + installer.post_install_messages.each do |name, message| + Bundler.ui.info "Post-install message from #{name}:\n#{message}" + end end end + + runtime = Bundler::Runtime.new(nil, definition) + runtime.setup.require + end + ensure + if bundler_module + bundler_module.send(:remove_method, :root) + bundler_module.send(:define_method, :root, old_root) end - runtime = Bundler::Runtime.new(nil, definition) - runtime.setup.require - end -ensure - if bundler_module - bundler_module.send(:remove_method, :root) - bundler_module.send(:define_method, :root, old_root) + if old_gemfile + ENV["BUNDLE_GEMFILE"] = old_gemfile + else + ENV.delete("BUNDLE_GEMFILE") + end end end |