From c2c7d7ae51c1595899f749d0e4ebe66a52c40be7 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Wed, 19 Jun 2019 02:03:36 -0500 Subject: [PATCH 1/8] Upgrade Uspec dev dependency. --- config_module.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_module.gemspec b/config_module.gemspec index fe004f7..c5157ae 100644 --- a/config_module.gemspec +++ b/config_module.gemspec @@ -22,5 +22,5 @@ Gem::Specification.new do |gem| gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.require_paths = ["lib"] - gem.add_development_dependency "uspec", "~> 0.1.0" + gem.add_development_dependency "uspec", "~> 0.2.1" end From 13032487eb02e8ab4e41ab5af239aa6d24b0f937 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 18:24:28 -0500 Subject: [PATCH 2/8] Starting the path to 2.0! --- lib/config_module/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/config_module/version.rb b/lib/config_module/version.rb index 9d19c9b..9ba6bed 100644 --- a/lib/config_module/version.rb +++ b/lib/config_module/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module ConfigModule - VERSION = "1.2.4".freeze + VERSION = "2.0.0".freeze end From 4e01400b1fa8a678ab326262943be88423a95903 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 18:46:32 -0500 Subject: [PATCH 3/8] Adding Rubocop config for newer versions. --- .rubocop.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index b87c721..56035f3 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -48,3 +48,9 @@ Style/StringLiteralsInInterpolation: Layout/AccessModifierIndentation: EnforcedStyle: outdent + +Style/EnforcedStyleForMultiline: + EnforcedStyle: consistent_comma + +Naming/RescuedExceptionsVariableName: + PreferredName: error \ No newline at end of file From 98b94253e37eee3347c9bed6730ba5e6117dc484 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 18:50:19 -0500 Subject: [PATCH 4/8] Rubocop suggestions fixed - Empty newlines after guard clauses - Converted conditionally-wrapped rescue block into one with a guard clause - Removed redundant freeze on immutable string --- lib/config_module/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/config_module/version.rb b/lib/config_module/version.rb index 9ba6bed..6b7adff 100644 --- a/lib/config_module/version.rb +++ b/lib/config_module/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module ConfigModule - VERSION = "2.0.0".freeze + VERSION = "2.0.0" end From 361b388102cee3ee6801dd9fc649f29d97c6d9da Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Sat, 3 Oct 2015 21:34:00 -0500 Subject: [PATCH 5/8] Setup method takes options in a block DSL. --- lib/config_module.rb | 46 +++++++++++++++++++++++++++++++++++++++ spec/config_setup_spec.rb | 30 +++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 spec/config_setup_spec.rb diff --git a/lib/config_module.rb b/lib/config_module.rb index 032dbce..7eefcfa 100644 --- a/lib/config_module.rb +++ b/lib/config_module.rb @@ -46,4 +46,50 @@ def method_missing name, *args, &block def respond_to_missing? name, include_all __config_module_helper.respond_to_missing_handler(name, include_all) || super end + + module_function + + def setup &block + options = { + method_name: 'config', + path: './config/settings.yml', + } + + setup_dsl = Class.new do + def method_name new_name + options[:method_name] = new_name + end + + def path new_path + options[:path] = new_path + end + + def namespaces new_namespaces + options[:namespaces] = new_namespaces.flatten + end + + def options + @options ||= Hash.new + end + end + + if block_given? then + options.merge! setup_dsl.new.tap{|dsl| dsl.instance_eval &block}.options + end + + Module.new do + @options = options + + define_method options[:method_name] do + __config_module_helper.config + end + + def self.extended child + child.extend ConfigModule + helper = child.send(:__config_module_helper) + helper.config_file = @options[:path] + helper.namespaces = @options[:namespaces] + end + end + end end diff --git a/spec/config_setup_spec.rb b/spec/config_setup_spec.rb new file mode 100644 index 0000000..7c16dd7 --- /dev/null +++ b/spec/config_setup_spec.rb @@ -0,0 +1,30 @@ +require_relative 'spec_helper' +require_relative 'example_config' + +spec 'able to set options using setup' do + c = ConfigModule.setup do + method_name :new_name + path 'new_path' + end + + expected = {method_name: :new_name, path: 'new_path'} + actual = c.instance_variable_get(:@options) + + actual == expected || actual +end + +spec 'setup method returns a module' do + c = ConfigModule.setup + c.class == Module +end + + +spec 'setup module can extend for full effect' do + m = Module.new + c = ConfigModule.setup do + path 'config/example.yml' + end + m.extend c + + m.is_a? ConfigModule +end From 7eac313fc384bcec5f772aff8c739b81011e0ca8 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 18:59:06 -0500 Subject: [PATCH 6/8] A test file ended up in the wrong directory. --- {spec => uspec}/config_setup_spec.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {spec => uspec}/config_setup_spec.rb (100%) diff --git a/spec/config_setup_spec.rb b/uspec/config_setup_spec.rb similarity index 100% rename from spec/config_setup_spec.rb rename to uspec/config_setup_spec.rb From d41e65cdaab602b31750d4cddc56cb368289b4e1 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 19:16:35 -0500 Subject: [PATCH 7/8] Freeze strings in setup spec. --- uspec/config_setup_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/uspec/config_setup_spec.rb b/uspec/config_setup_spec.rb index 7c16dd7..1a75706 100644 --- a/uspec/config_setup_spec.rb +++ b/uspec/config_setup_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative 'spec_helper' require_relative 'example_config' From 948797ad9f6a3ca592e0bcfd62bb69455c0eab77 Mon Sep 17 00:00:00 2001 From: Anthony Cook Date: Fri, 14 Jun 2019 19:16:51 -0500 Subject: [PATCH 8/8] Rubocop suggestions. --- lib/config_module.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/config_module.rb b/lib/config_module.rb index 7eefcfa..a3d86f5 100644 --- a/lib/config_module.rb +++ b/lib/config_module.rb @@ -47,12 +47,12 @@ def respond_to_missing? name, include_all __config_module_helper.respond_to_missing_handler(name, include_all) || super end - module_function +module_function def setup &block options = { - method_name: 'config', - path: './config/settings.yml', + method_name: "config", + path: "./config/settings.yml", } setup_dsl = Class.new do @@ -69,12 +69,12 @@ def namespaces new_namespaces end def options - @options ||= Hash.new + @options ||= {} end end - if block_given? then - options.merge! setup_dsl.new.tap{|dsl| dsl.instance_eval &block}.options + if block_given? + options.merge! setup_dsl.new.tap { |dsl| dsl.instance_eval(&block) }.options end Module.new do