diff --git a/lib/puma/cli.rb b/lib/puma/cli.rb index 2e2a2f3088..9253b1c6cf 100644 --- a/lib/puma/cli.rb +++ b/lib/puma/cli.rb @@ -115,7 +115,7 @@ def restart! end require 'puma/jruby_restart' - JRubyRestart.chdir_exec(@restart_dir, Gem.ruby, *@restart_argv) + JRubyRestart.chdir_exec(@restart_dir, @restart_argv) else redirects = {} @binder.listeners.each_with_index do |(l,io),i| diff --git a/lib/puma/jruby_restart.rb b/lib/puma/jruby_restart.rb index ddadc82c1f..7e5b16d9d0 100644 --- a/lib/puma/jruby_restart.rb +++ b/lib/puma/jruby_restart.rb @@ -8,12 +8,12 @@ module JRubyRestart attach_function :execlp, [:string, :varargs], :int attach_function :chdir, [:string], :int - def self.chdir_exec(dir, cmd, *argv) + def self.chdir_exec(dir, argv) chdir(dir) - argv.unshift(cmd) + cmd = argv.first argv = ([:string] * argv.size).zip(argv).flatten - argv <<:int - argv << 0 + argv << :string + argv << nil execlp(cmd, *argv) raise SystemCallError.new(FFI.errno) end