diff --git a/lib/puma/launcher.rb b/lib/puma/launcher.rb index ea1c301e26..58b51a3d5e 100644 --- a/lib/puma/launcher.rb +++ b/lib/puma/launcher.rb @@ -165,10 +165,16 @@ def phased_restart def run previous_env = if defined?(Bundler) - env = Bundler::ORIGINAL_ENV + env = Bundler::ORIGINAL_ENV.dup # add -rbundler/setup so we load from Gemfile when restarting bundle = "-rbundler/setup" - env["RUBYOPT"] = [env["RUBYOPT"], bundle].join(" ") unless env["RUBYOPT"].include?(bundle) + + # bundler init ORIGINAL_ENV from ENV before it sets RUBYOPT in ENV, so env["RUBYOPT"] can be nil + if env["RUBYOPT"] + env["RUBYOPT"] = [env["RUBYOPT"], bundle].join(" ") unless env["RUBYOPT"].include?(bundle) + else + env["RUBYOPT"] = bundle + end env else ENV.to_h