From 7137bef58a9fd2bf10a56f2d62e9e794e2891d30 Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 22:31:49 +0300 Subject: [PATCH 1/6] Extract Puma::Configuration#config_files method and add few unit tests --- lib/puma/configuration.rb | 13 +++++++++---- test/test_config.rb | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index 47f9401e44..3d68b25980 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -189,6 +189,14 @@ def puma_default_options end def load + config_files.each do |f| + @file_dsl._load_from(f) + end + @options + end + + + def config_files files = @options.all_of(:config_files) if files.empty? @@ -201,10 +209,7 @@ def load files = [] end - files.each do |f| - @file_dsl._load_from(f) - end - @options + files end # Call once all configuration (included from rackup files) diff --git a/test/test_config.rb b/test/test_config.rb index 87c1be44f0..f6e3dfd4f0 100644 --- a/test/test_config.rb +++ b/test/test_config.rb @@ -84,6 +84,27 @@ def test_parameters_overwrite_files assert_equal 5, conf.options[:max_threads] end + def test_config_files_with_dash + conf = Puma::Configuration.new(config_files: ['-']) do + end + + assert_equal [], conf.config_files + end + + def test_config_files_with_existing_path + conf = Puma::Configuration.new(config_files: ['test/config/settings.rb']) do + end + + assert_equal ['test/config/settings.rb'], conf.config_files + end + + def test_config_files_with_non_existing_path + conf = Puma::Configuration.new(config_files: ['test/config/typo/settings.rb']) do + end + + assert_equal ['test/config/typo/settings.rb'], conf.config_files + end + private def with_env(env = {}) From a55baca240a7e792e39955e9b291c516c0e8bb9b Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 22:55:25 +0300 Subject: [PATCH 2/6] Add TestConfigFile#test_config_files_with_rack_env test --- test/test_config.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/test_config.rb b/test/test_config.rb index f6e3dfd4f0..e8d86c8abd 100644 --- a/test/test_config.rb +++ b/test/test_config.rb @@ -3,6 +3,11 @@ require "puma/configuration" class TestConfigFile < Minitest::Test + def setup + FileUtils.mkpath("config/puma") + File.write("config/puma/fake-env.rb", "") + end + def test_app_from_rackup conf = Puma::Configuration.new do |c| c.rackup "test/rackup/hello-bind.ru" @@ -105,6 +110,19 @@ def test_config_files_with_non_existing_path assert_equal ['test/config/typo/settings.rb'], conf.config_files end + def test_config_files_with_rack_env + with_env('RACK_ENV' => 'fake-env') do + conf = Puma::Configuration.new do + end + + assert_equal ['config/puma/fake-env.rb'], conf.config_files + end + end + + def teardown + FileUtils.rm_r("config/puma") + end + private def with_env(env = {}) From ceeb7e9efccfbca3b11ba5c9f73c45bc1267e21c Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 22:56:08 +0300 Subject: [PATCH 3/6] Fix configuration loading based on RACK_ENV --- lib/puma/configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index 3d68b25980..58070b094b 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -200,7 +200,7 @@ def config_files files = @options.all_of(:config_files) if files.empty? - imp = %W(config/puma/#{@options[:environment]}.rb config/puma.rb).find { |f| + imp = %W(config/puma/#{@options[:environment].call}.rb config/puma.rb).find { |f| File.exist?(f) } From d30d28e46094b70543a2c677f96c9c3dab08f437 Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 23:03:03 +0300 Subject: [PATCH 4/6] Add test case when config files files are not specified --- test/test_config.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/test_config.rb b/test/test_config.rb index e8d86c8abd..5f73f8feb3 100644 --- a/test/test_config.rb +++ b/test/test_config.rb @@ -89,6 +89,13 @@ def test_parameters_overwrite_files assert_equal 5, conf.options[:max_threads] end + def test_config_files_default + conf = Puma::Configuration.new do + end + + assert_equal [nil], conf.config_files + end + def test_config_files_with_dash conf = Puma::Configuration.new(config_files: ['-']) do end From bc1ba97ebf01c461cc25523c0c1f35156867386a Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 23:04:29 +0300 Subject: [PATCH 5/6] Refactor Puma::Configuration#config_files method --- lib/puma/configuration.rb | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index 58070b094b..fde84be84c 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -189,27 +189,22 @@ def puma_default_options end def load - config_files.each do |f| - @file_dsl._load_from(f) - end + config_files.each { |config_file| @file_dsl._load_from(config_file) } + @options end - def config_files files = @options.all_of(:config_files) - if files.empty? - imp = %W(config/puma/#{@options[:environment].call}.rb config/puma.rb).find { |f| - File.exist?(f) - } + return [] if files == ['-'] + return files if files.any? - files << imp - elsif files == ["-"] - files = [] + first_default_file = %W(config/puma/#{@options[:environment].call}.rb config/puma.rb).find do |f| + File.exist?(f) end - files + [first_default_file] end # Call once all configuration (included from rackup files) From fb3fc019d2ad68ea73f3e17e08c05257389c865e Mon Sep 17 00:00:00 2001 From: Vilius Luneckas Date: Mon, 19 Jun 2017 23:14:43 +0300 Subject: [PATCH 6/6] Fix backwards compatibility issue. Environment could be a String or Proc --- lib/puma/configuration.rb | 6 +++++- test/test_config.rb | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/puma/configuration.rb b/lib/puma/configuration.rb index fde84be84c..0cb33a9f57 100644 --- a/lib/puma/configuration.rb +++ b/lib/puma/configuration.rb @@ -200,7 +200,7 @@ def config_files return [] if files == ['-'] return files if files.any? - first_default_file = %W(config/puma/#{@options[:environment].call}.rb config/puma.rb).find do |f| + first_default_file = %W(config/puma/#{environment_str}.rb config/puma.rb).find do |f| File.exist?(f) end @@ -264,6 +264,10 @@ def environment @options[:environment] end + def environment_str + environment.respond_to?(:call) ? environment.call : environment + end + def load_plugin(name) @plugins.create name end diff --git a/test/test_config.rb b/test/test_config.rb index 5f73f8feb3..b62a21817c 100644 --- a/test/test_config.rb +++ b/test/test_config.rb @@ -126,6 +126,15 @@ def test_config_files_with_rack_env end end + def test_config_files_with_specified_environment + conf = Puma::Configuration.new do + end + + conf.options[:environment] = 'fake-env' + + assert_equal ['config/puma/fake-env.rb'], conf.config_files + end + def teardown FileUtils.rm_r("config/puma") end