From 8a3829f00a8b7a7c9e72022dedd90bdbe8489ec2 Mon Sep 17 00:00:00 2001 From: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:59:50 +0100 Subject: [PATCH 1/5] Scaffolding commands refinement Debugged files generated with scaffolding commands, updated integration tests to match the refined files paths, updated Readme. Run integration and system tests locally. --- README.md | 22 +++++++++++++++++++ lib/generators/templates/common/read_me.tt | 20 +++++++++++++++++ lib/ruby_raider.rb | 2 +- lib/scaffolding/scaffolding.rb | 8 +++---- lib/scaffolding/templates/feature.tt | 2 +- lib/scaffolding/templates/page_object.tt | 4 ++-- lib/scaffolding/templates/spec.tt | 5 ++--- .../commands/scaffolding_commands_spec.rb | 8 +++---- 8 files changed, 56 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index e8662b4..68a0e11 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,28 @@ All the basic commands have their corresponding shortcut: * u for utility * v for version +### Scaffolding Commands +Ruby Raider also supports scaffolding: + +* To create a new page object you do: ```raider g page [PAGE_NAME]``` +* To create a new spec you do: ```raider g spec [SPEC_NAME]``` +* To create a new feature you do: ```raider g feature [FEATURE_NAME]``` +* To create both a page and a spec/feature you do: ```raider g scaffold [SCAFFOLD_NAME]``` + +It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and +specs. + +If you want to set the default path for the creation of your features, helpers and specs: + +```ruby +raider u path [PATH_NAME] - -feature or -f +raider u path [PATH_NAME] - -spec or -s +raider u path [PATH_NAME] - -helper or -h +``` + +If you don't specify an option, path will assume you want to change the default path for pages. + + ### Appium Server Command To initialise Appium server run this command: ```ruby diff --git a/lib/generators/templates/common/read_me.tt b/lib/generators/templates/common/read_me.tt index 469d9a7..4b2559b 100644 --- a/lib/generators/templates/common/read_me.tt +++ b/lib/generators/templates/common/read_me.tt @@ -102,6 +102,26 @@ All the basic commands have their corresponding shortcut: * u for utility * v for version +### Scaffolding Commands +Ruby raider also supports scaffolding: + +* To create a new page object you do: ```raider g page [PAGE_NAME]``` +* To create a new spec you do: ```raider g spec [SPEC_NAME]``` +* To create a new feature you do: ```raider g feature [FEATURE_NAME]``` +* To create both a page and a spec/feature you do: ```raider g scaffold [SCAFFOLD_NAME]``` + +It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and +specs. + +If you want to set the default path for the creation of your features, helpers and specs: + +```ruby +raider u path [PATH_NAME] - -feature or -f +raider u path [PATH_NAME] - -spec or -s +raider u path [PATH_NAME] - -helper or -h +``` + +If you don't specify an option, path will assume you want to change the default path for pages. ### Appium Server Command To initialise Appium server run this command: diff --git a/lib/ruby_raider.rb b/lib/ruby_raider.rb index d9c6bc3..3855f11 100644 --- a/lib/ruby_raider.rb +++ b/lib/ruby_raider.rb @@ -24,7 +24,7 @@ def version map 'v' => 'version' - desc 'generate', 'Provides access to all the generator commands' + desc 'generate', 'Provides access to all the scaffolding commands' subcommand 'generate', ScaffoldingCommands map 'g' => 'generate' diff --git a/lib/scaffolding/scaffolding.rb b/lib/scaffolding/scaffolding.rb index b4b6623..c2c46e2 100644 --- a/lib/scaffolding/scaffolding.rb +++ b/lib/scaffolding/scaffolding.rb @@ -13,7 +13,7 @@ def self.source_root end def generate_class - template('page_object.tt', default_path("page_objects/pages/#{name}_page.rb", '_page.rb')) + template('page_object.tt', default_path("page_objects/pages/#{name}.rb", '_page.rb')) end def generate_feature @@ -21,7 +21,7 @@ def generate_feature end def generate_spec - template('spec.tt', default_path("spec/#{name}_spec.rb", '_spec.rb')) + template('spec.tt', default_path("spec/#{name}_page_spec.rb", '_spec.rb')) end def generate_helper @@ -34,7 +34,7 @@ def generate_config end def delete_class - remove_file(default_path("page_objects/pages/#{name}_page.rb", '_page.rb')) + remove_file(default_path("page_objects/pages/#{name}.rb", '_page.rb')) end def delete_feature @@ -42,7 +42,7 @@ def delete_feature end def delete_spec - remove_file(default_path("spec/#{name}_spec.rb", '_spec.rb')) + remove_file(default_path("spec/#{name}_page_spec.rb", '_spec.rb')) end def delete_helper diff --git a/lib/scaffolding/templates/feature.tt b/lib/scaffolding/templates/feature.tt index a6ea1de..2416a32 100644 --- a/lib/scaffolding/templates/feature.tt +++ b/lib/scaffolding/templates/feature.tt @@ -1,4 +1,4 @@ -Feature: <%= name %> +Feature: <%= name.capitalize %> Scenario: Scenario name Given I am diff --git a/lib/scaffolding/templates/page_object.tt b/lib/scaffolding/templates/page_object.tt index 50aba00..28b6b2a 100644 --- a/lib/scaffolding/templates/page_object.tt +++ b/lib/scaffolding/templates/page_object.tt @@ -1,8 +1,8 @@ # frozen_string_literal: true -require_relative '../abstract/abstract_page' +require_relative '../abstract/page' -class <%= name.split('_').map {|word| word.capitalize }.join + 'Page' %> < AbstractPage +class <%= name.split('_').map {|word| word.capitalize }.join %> < Page # Actions diff --git a/lib/scaffolding/templates/spec.tt b/lib/scaffolding/templates/spec.tt index 4a5cc98..e13e9a0 100644 --- a/lib/scaffolding/templates/spec.tt +++ b/lib/scaffolding/templates/spec.tt @@ -1,5 +1,4 @@ -require_relative 'base_spec' -require_relative '../page_objects/pages/<%= name %>_page' +require_relative '../page_objects/pages/<%= name %>' -describe <%= name.split('_').map {|word| word.capitalize }.join + 'Page' %> do +describe '<%= name.split('_').map {|word| word.capitalize }.join %>' do end diff --git a/spec/integration/commands/scaffolding_commands_spec.rb b/spec/integration/commands/scaffolding_commands_spec.rb index 18ea0c1..380e538 100644 --- a/spec/integration/commands/scaffolding_commands_spec.rb +++ b/spec/integration/commands/scaffolding_commands_spec.rb @@ -27,12 +27,12 @@ it 'scaffolds for rspec creating a spec' do scaffold.new.invoke(:scaffold, nil, %W[#{name}]) - expect(Pathname.new("spec/#{name}_spec.rb")).to be_file + expect(Pathname.new("spec/#{name}_page_spec.rb")).to be_file end it 'scaffolds for rspec creating a page' do scaffold.new.invoke(:scaffold, nil, %W[#{name}]) - expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file + expect(Pathname.new("page_objects/pages/#{name}.rb")).to be_file end it 'deletes a spec' do @@ -47,7 +47,7 @@ it 'creates a page' do scaffold.new.invoke(:page, nil, %W[#{name}]) - expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file + expect(Pathname.new("page_objects/pages/#{name}.rb")).to be_file end it 'creates a page with a path' do @@ -77,7 +77,7 @@ it 'scaffolds for cucumber creating a page' do scaffold.new.invoke(:scaffold, nil, %W[#{name}]) - expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file + expect(Pathname.new("page_objects/pages/#{name}.rb")).to be_file end it 'creates a helper' do From c9de2b209e288188ad2c6aa799b227a8336fefa6 Mon Sep 17 00:00:00 2001 From: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:10:29 +0100 Subject: [PATCH 2/5] Refined scaffolding commands Updated the generated files, added command for steps, updated readme. Run integration and system tests locally. Tested also web frameworks. --- README.md | 5 +++-- lib/commands/scaffolding_commands.rb | 19 +++++++++++++++---- lib/generators/templates/common/read_me.tt | 12 +++++++----- lib/scaffolding/scaffolding.rb | 8 ++++++++ lib/scaffolding/templates/steps.tt | 12 ++++++++++++ .../commands/scaffolding_commands_spec.rb | 10 ++++++++++ 6 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 lib/scaffolding/templates/steps.tt diff --git a/README.md b/README.md index 68a0e11..845f635 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ Select the ones you will like to work with. ```ruby Commands: - raider generate # Provides access to all the generators commands + raider generate # Provides access to all the scaffolding commands raider help [COMMAND] # Describe available commands or one specific command raider new [PROJECT_NAME] # Creates a new framework based on settings picked raider open_ai # Provides access to all the open ai commands @@ -110,7 +110,8 @@ Ruby Raider also supports scaffolding: * To create a new page object you do: ```raider g page [PAGE_NAME]``` * To create a new spec you do: ```raider g spec [SPEC_NAME]``` * To create a new feature you do: ```raider g feature [FEATURE_NAME]``` -* To create both a page and a spec/feature you do: ```raider g scaffold [SCAFFOLD_NAME]``` +* To create a new steps definition you do: ```raider g steps [STEPS_NAME]``` +* To create both a page/spec or a page/feature/steps you do: ```raider g scaffold [SCAFFOLD_NAME]``` It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and specs. diff --git a/lib/commands/scaffolding_commands.rb b/lib/commands/scaffolding_commands.rb index 5313351..cf1d484 100644 --- a/lib/commands/scaffolding_commands.rb +++ b/lib/commands/scaffolding_commands.rb @@ -50,6 +50,16 @@ def helper(name) handle_scaffolding(name, 'helper') end + desc 'steps [STEPS_NAME]', 'Creates a new steps definition' + option :path, + type: :string, required: false, desc: 'The path where your steps will be created', aliases: '-p' + option :delete, + type: :boolean, required: false, desc: 'This will delete the selected steps', aliases: '-d' + + def steps(name) + handle_scaffolding(name, 'steps') + end + desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating' def scaffold(name) @@ -57,14 +67,11 @@ def scaffold(name) Scaffolding.new([name, load_config_path('spec')]).generate_spec else Scaffolding.new([name, load_config_path('feature')]).generate_feature + Scaffolding.new([name, load_config_path('steps')]).generate_steps end Scaffolding.new([name, load_config_path('page')]).generate_class end - desc 'config', 'Creates configuration file' - option :delete, - type: :boolean, required: false, desc: 'This will delete the config file', aliases: '-d' - no_commands do def load_config_path(type) YAML.load_file('config/config.yml')["#{type}_path"] if Pathname.new('config/config.yml').exist? @@ -84,6 +91,8 @@ def handle_scaffolding(name, type) scaffolding.delete_spec when 'helper' scaffolding.delete_helper + when 'steps' + scaffolding.delete_steps end else case type @@ -95,6 +104,8 @@ def handle_scaffolding(name, type) scaffolding.generate_spec when 'helper' scaffolding.generate_helper + when 'steps' + scaffolding.generate_steps end end end diff --git a/lib/generators/templates/common/read_me.tt b/lib/generators/templates/common/read_me.tt index 4b2559b..a7b6fe1 100644 --- a/lib/generators/templates/common/read_me.tt +++ b/lib/generators/templates/common/read_me.tt @@ -39,7 +39,7 @@ Ruby Raider is a generator and scaffolding gem to make UI test automation easier | Rspec and Watir | | Rspec and Appium for Android | | | | Cucumber and Appium Cross-platform | | | | Rspec and Appium Cross-platform | -| | | Cucumber and Sparkling Watir for IOS | +| | | Cucumber and Sparkling Watir for IOS | | | | Rspec and Sparkling Watir for IOS | @@ -86,7 +86,7 @@ Select the ones you will like to work with. ```ruby Commands: - raider generate # Provides access to all the generators commands + raider generate # Provides access to all the scaffolding commands raider help [COMMAND] # Describe available commands or one specific command raider new [PROJECT_NAME] # Creates a new framework based on settings picked raider open_ai # Provides access to all the open ai commands @@ -103,12 +103,13 @@ All the basic commands have their corresponding shortcut: * v for version ### Scaffolding Commands -Ruby raider also supports scaffolding: +Ruby Raider also supports scaffolding: * To create a new page object you do: ```raider g page [PAGE_NAME]``` * To create a new spec you do: ```raider g spec [SPEC_NAME]``` * To create a new feature you do: ```raider g feature [FEATURE_NAME]``` -* To create both a page and a spec/feature you do: ```raider g scaffold [SCAFFOLD_NAME]``` +* To create a new steps definition you do: ```raider g steps [STEPS_NAME]``` +* To create both a page/spec or a page/feature/steps you do: ```raider g scaffold [SCAFFOLD_NAME]``` It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and specs. @@ -123,6 +124,7 @@ raider u path [PATH_NAME] - -helper or -h If you don't specify an option, path will assume you want to change the default path for pages. + ### Appium Server Command To initialise Appium server run this command: ```ruby @@ -148,4 +150,4 @@ Options : -pr, [--prompt = PROMPT] # This will create the selected steps based on your prompt using open ai -i, [--input = INPUT] # It uses a file as input to create the steps -``` +``` \ No newline at end of file diff --git a/lib/scaffolding/scaffolding.rb b/lib/scaffolding/scaffolding.rb index c2c46e2..7a7bfca 100644 --- a/lib/scaffolding/scaffolding.rb +++ b/lib/scaffolding/scaffolding.rb @@ -28,6 +28,10 @@ def generate_helper template('helper.tt', default_path("helpers/#{name}_helper.rb", '_helper.rb')) end + def generate_steps + template('steps.tt', default_path("features/step_definitions/#{name}_steps.rb", '_steps.rb')) + end + def generate_config template('../../generators/templates/common/config.tt', default_path('config/config.yml', '.yml')) @@ -49,6 +53,10 @@ def delete_helper remove_file(default_path("helpers/#{name}_helper.rb", '_helper.rb')) end + def delete_steps + remove_file(default_path("features/step_definitions/#{name}_steps.rb", '_steps.rb')) + end + def delete_config remove_file(default_path('config/config.yml', '.yml')) end diff --git a/lib/scaffolding/templates/steps.tt b/lib/scaffolding/templates/steps.tt new file mode 100644 index 0000000..c7b29b9 --- /dev/null +++ b/lib/scaffolding/templates/steps.tt @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require_relative '../../page_objects/pages/<%= name %>' + +Given ('') do +end + +When ('') do +end + +Then ('') do +end \ No newline at end of file diff --git a/spec/integration/commands/scaffolding_commands_spec.rb b/spec/integration/commands/scaffolding_commands_spec.rb index 380e538..902083d 100644 --- a/spec/integration/commands/scaffolding_commands_spec.rb +++ b/spec/integration/commands/scaffolding_commands_spec.rb @@ -80,11 +80,21 @@ expect(Pathname.new("page_objects/pages/#{name}.rb")).to be_file end + it 'scaffolds for cucumber creating a steps definition' do + scaffold.new.invoke(:scaffold, nil, %W[#{name}]) + expect(Pathname.new("features/step_definitions/#{name}_steps.rb")).to be_file + end + it 'creates a helper' do scaffold.new.invoke(:helper, nil, %W[#{name}]) expect(Pathname.new("helpers/#{name}_helper.rb")).to be_file end + it 'creates a steps definition' do + scaffold.new.invoke(:steps, nil, %W[#{name}]) + expect(Pathname.new("features/step_definitions/#{name}_steps.rb")).to be_file + end + it 'deletes a page' do scaffold.new.invoke(:page, nil, %w[login --delete]) expect(Pathname.new('page_objects/pages/login_page.rb')).not_to be_file From 405f2bb2df1f54735fee3a1eb05055c00f1eb765 Mon Sep 17 00:00:00 2001 From: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Date: Wed, 7 Feb 2024 13:49:08 +0100 Subject: [PATCH 3/5] Created two separate methods for scaffolding Run integration and system test --- lib/commands/scaffolding_commands.rb | 61 +++++++++++----------------- lib/scaffolding/scaffolding.rb | 4 +- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/lib/commands/scaffolding_commands.rb b/lib/commands/scaffolding_commands.rb index cf1d484..f005237 100644 --- a/lib/commands/scaffolding_commands.rb +++ b/lib/commands/scaffolding_commands.rb @@ -15,7 +15,9 @@ class ScaffoldingCommands < Thor type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d' def page(name) - handle_scaffolding(name, 'page') + return delete_scaffolding(name, 'page', options[:path]) if options[:delete] + + generate_scaffolding(name, 'page', options[:path]) end desc 'feature [NAME]', 'Creates a new feature' @@ -27,7 +29,9 @@ def page(name) required: false, desc: 'This will delete the selected feature', aliases: '-d' def feature(name) - handle_scaffolding(name, 'feature') + return delete_scaffolding(name, 'feature', options[:path]) if options[:delete] + + generate_scaffolding(name, 'feature', options[:path]) end desc 'spec [SPEC_NAME]', 'Creates a new spec' @@ -37,7 +41,9 @@ def feature(name) type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d' def spec(name) - handle_scaffolding(name, 'spec') + return delete_scaffolding(name, 'spec', options[:path]) if options[:delete] + + generate_scaffolding(name, 'spec', options[:path]) end desc 'helper [HELPER_NAME]', 'Creates a new helper' @@ -47,7 +53,9 @@ def spec(name) type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d' def helper(name) - handle_scaffolding(name, 'helper') + return delete_scaffolding(name, 'helper', options[:path]) if options[:delete] + + generate_scaffolding(name, 'helper', options[:path]) end desc 'steps [STEPS_NAME]', 'Creates a new steps definition' @@ -57,7 +65,9 @@ def helper(name) type: :boolean, required: false, desc: 'This will delete the selected steps', aliases: '-d' def steps(name) - handle_scaffolding(name, 'steps') + return delete_scaffolding(name, 'steps', options[:path]) if options[:delete] + + generate_scaffolding(name, 'steps', options[:path]) end desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating' @@ -69,7 +79,7 @@ def scaffold(name) Scaffolding.new([name, load_config_path('feature')]).generate_feature Scaffolding.new([name, load_config_path('steps')]).generate_steps end - Scaffolding.new([name, load_config_path('page')]).generate_class + Scaffolding.new([name, load_config_path('page')]).generate_page end no_commands do @@ -77,37 +87,14 @@ def load_config_path(type) YAML.load_file('config/config.yml')["#{type}_path"] if Pathname.new('config/config.yml').exist? end - def handle_scaffolding(name, type) - path = options[:path] || load_config_path(type) - scaffolding = Scaffolding.new([name, path]) - - if options[:delete] - case type - when 'page' - scaffolding.delete_class - when 'feature' - scaffolding.delete_feature - when 'spec' - scaffolding.delete_spec - when 'helper' - scaffolding.delete_helper - when 'steps' - scaffolding.delete_steps - end - else - case type - when 'page' - scaffolding.generate_class - when 'feature' - scaffolding.generate_feature - when 'spec' - scaffolding.generate_spec - when 'helper' - scaffolding.generate_helper - when 'steps' - scaffolding.generate_steps - end - end + def delete_scaffolding(name, type, path) + path ||= load_config_path(type) + Scaffolding.new([name, path]).send("delete_#{type}") + end + + def generate_scaffolding(name, type, path) + path ||= load_config_path(type) + Scaffolding.new([name, path]).send("generate_#{type}") end end end diff --git a/lib/scaffolding/scaffolding.rb b/lib/scaffolding/scaffolding.rb index 7a7bfca..9179e62 100644 --- a/lib/scaffolding/scaffolding.rb +++ b/lib/scaffolding/scaffolding.rb @@ -12,7 +12,7 @@ def self.source_root "#{File.dirname(__FILE__)}/templates" end - def generate_class + def generate_page template('page_object.tt', default_path("page_objects/pages/#{name}.rb", '_page.rb')) end @@ -37,7 +37,7 @@ def generate_config default_path('config/config.yml', '.yml')) end - def delete_class + def delete_page remove_file(default_path("page_objects/pages/#{name}.rb", '_page.rb')) end From fe1588e8d0358217be6a26b8fbf32c4e14244c83 Mon Sep 17 00:00:00 2001 From: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Date: Wed, 7 Feb 2024 13:57:19 +0100 Subject: [PATCH 4/5] Changes to pass reek review --- lib/commands/scaffolding_commands.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/commands/scaffolding_commands.rb b/lib/commands/scaffolding_commands.rb index f005237..8bca749 100644 --- a/lib/commands/scaffolding_commands.rb +++ b/lib/commands/scaffolding_commands.rb @@ -15,7 +15,7 @@ class ScaffoldingCommands < Thor type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d' def page(name) - return delete_scaffolding(name, 'page', options[:path]) if options[:delete] + return delete_scaffolding(name, 'page') if options[:delete] generate_scaffolding(name, 'page', options[:path]) end @@ -29,7 +29,7 @@ def page(name) required: false, desc: 'This will delete the selected feature', aliases: '-d' def feature(name) - return delete_scaffolding(name, 'feature', options[:path]) if options[:delete] + return delete_scaffolding(name, 'feature') if options[:delete] generate_scaffolding(name, 'feature', options[:path]) end @@ -41,7 +41,7 @@ def feature(name) type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d' def spec(name) - return delete_scaffolding(name, 'spec', options[:path]) if options[:delete] + return delete_scaffolding(name, 'spec') if options[:delete] generate_scaffolding(name, 'spec', options[:path]) end @@ -53,7 +53,7 @@ def spec(name) type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d' def helper(name) - return delete_scaffolding(name, 'helper', options[:path]) if options[:delete] + return delete_scaffolding(name, 'helper') if options[:delete] generate_scaffolding(name, 'helper', options[:path]) end @@ -65,7 +65,7 @@ def helper(name) type: :boolean, required: false, desc: 'This will delete the selected steps', aliases: '-d' def steps(name) - return delete_scaffolding(name, 'steps', options[:path]) if options[:delete] + return delete_scaffolding(name, 'steps') if options[:delete] generate_scaffolding(name, 'steps', options[:path]) end @@ -87,9 +87,8 @@ def load_config_path(type) YAML.load_file('config/config.yml')["#{type}_path"] if Pathname.new('config/config.yml').exist? end - def delete_scaffolding(name, type, path) - path ||= load_config_path(type) - Scaffolding.new([name, path]).send("delete_#{type}") + def delete_scaffolding(name, type) + Scaffolding.new([name]).send("delete_#{type}") end def generate_scaffolding(name, type, path) From a820155e8108cb32191e19292fe323349cb3a1bb Mon Sep 17 00:00:00 2001 From: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Date: Wed, 7 Feb 2024 14:27:19 +0100 Subject: [PATCH 5/5] Disabled reek condition --- lib/commands/scaffolding_commands.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/commands/scaffolding_commands.rb b/lib/commands/scaffolding_commands.rb index 8bca749..5d18c94 100644 --- a/lib/commands/scaffolding_commands.rb +++ b/lib/commands/scaffolding_commands.rb @@ -7,6 +7,7 @@ # :reek:FeatureEnvy { enabled: false } # :reek:UtilityFunction { enabled: false } +# :reek:RepeatedConditional { enabled: false } class ScaffoldingCommands < Thor desc 'page [PAGE_NAME]', 'Creates a new page object' option :path,