diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index 765454f603..5fc350fc10 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -13,10 +13,10 @@ module ConfigDefault end class LeveledOptions - def initialize(default={}) - @cur = {} + def initialize(default_options, user_options) + @cur = user_options @set = [@cur] - @defaults = default.dup + @defaults = default_options.dup end def initialize_copy(other) @@ -133,12 +133,9 @@ def self.from_file(path) end def initialize(options={}, &blk) - @options = LeveledOptions.new(default_options) - @plugins = PluginLoader.new + @options = LeveledOptions.new(default_options, options) - # options.each do |k,v| - # @options[k] = v - # end + @plugins = PluginLoader.new if blk configure(&blk) diff --git a/lib/rack/handler/puma.rb b/lib/rack/handler/puma.rb index 04306f19b9..0cde69fef0 100644 --- a/lib/rack/handler/puma.rb +++ b/lib/rack/handler/puma.rb @@ -12,7 +12,7 @@ module Puma def self.run(app, options = {}) options = DEFAULT_OPTIONS.merge(options) - conf = ::Puma::Configuration.new do |c| + conf = ::Puma::Configuration.new(options) do |c| c.quiet if options.delete(:Verbose) @@ -69,4 +69,3 @@ def self.valid_options register :puma, Puma end end - diff --git a/test/test_config.rb b/test/test_config.rb index 89366d759b..11502baffb 100644 --- a/test/test_config.rb +++ b/test/test_config.rb @@ -51,6 +51,12 @@ def test_lowleve_error_handler_DSL assert_equal [200, {}, ["error page"]], app.call({}) end + def test_allow_users_to_override_default_options + conf = Puma::Configuration.new(restart_cmd: 'bin/rails server') + + assert_equal 'bin/rails server', conf.options[:restart_cmd] + end + private def with_env(env = {})