diff --git a/History.md b/History.md index d7f8562537..ce96413323 100644 --- a/History.md +++ b/History.md @@ -38,6 +38,7 @@ * Fixed a few minor concurrency bugs in ThreadPool that may have affected non-GVL Rubies (#2220) * Fix `out_of_band` hook never executed if the number of worker threads is > 1 (#2177) * Fix ThreadPool#shutdown timeout accuracy (#2221) + * Fix `UserFileDefaultOptions#fetch` to properly use `default` (#2233) * Refactor * Remove unused loader argument from Plugin initializer (#2095) diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index 29d953c9fe..885ee3a7b4 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -54,9 +54,7 @@ def initialize(user_options, default_options) attr_reader :user_options, :file_options, :default_options def [](key) - return user_options[key] if user_options.key?(key) - return file_options[key] if file_options.key?(key) - return default_options[key] if default_options.key?(key) + fetch(key) end def []=(key, value) @@ -64,7 +62,10 @@ def []=(key, value) end def fetch(key, default_value = nil) - self[key] || default_value + return user_options[key] if user_options.key?(key) + return file_options[key] if file_options.key?(key) + return default_options[key] if default_options.key?(key) + nil end def all_of(key)