Class: ShouldaMatchmakers::ControllerGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ShouldaMatchmakers::ControllerGenerator
- Defined in:
- lib/support/controller_generator.rb
Instance Method Summary collapse
- #create_controller_matchmakers ⇒ Object
- #generate_controller_matchmakers(generator_options) ⇒ Object
- #load_action_controller_controller_names ⇒ Object
- #load_application ⇒ Object
- #save_generate(controller_name) ⇒ Object
- #select_action_controller_controller_names(app_action_controller_descendants_names, generator_options) ⇒ Object
- #select_controller_names_config(app_action_controller_descendants_names) ⇒ Object
- #select_controller_names_generator_option_exclude(app_action_controller_descendants_names, exclude_controller_names) ⇒ Object
- #select_controller_names_generator_option_exclude_with_config(app_action_controller_descendants_names, exclude_with_config_controller_names) ⇒ Object
- #select_controller_names_generator_option_include(app_action_controller_descendants_names, include_controller_names) ⇒ Object
- #select_controller_names_generator_option_include_with_config(app_action_controller_descendants_names, include_with_config_controller_names) ⇒ Object
Instance Method Details
#create_controller_matchmakers ⇒ Object
44 45 46 47 48 |
# File 'lib/support/controller_generator.rb', line 44 def create_controller_matchmakers = .to_hash load_application generate_controller_matchmakers() end |
#generate_controller_matchmakers(generator_options) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/support/controller_generator.rb', line 54 def generate_controller_matchmakers() app_action_controller_descendants_names = load_action_controller_controller_names if app_action_controller_descendants_names.present? selected_action_controller_controller_names = select_action_controller_controller_names(app_action_controller_descendants_names, ) selected_action_controller_controller_names.each do |controller_name| save_generate(controller_name) do @action_controller_controller_sm_model = ::ShouldaMatchmakers::Controller::ActionController::ActionControllerController.new(controller_name) template_filename = File.('vendor/shoulda_matchmakers/lib/templates/controller/action_controller/controller_spec_template.haml') template = File.read(template_filename) create_file "#{ ShouldaMatchmakers.configuration.controllers_test_path }/#{ controller_name.underscore }_spec.rb", Haml::Engine.new(template, filename: template_filename, format: :html5).to_html(binding) end end end end |
#load_action_controller_controller_names ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/support/controller_generator.rb', line 70 def load_action_controller_controller_names if defined?(::ActionController::Base) ActionController::Base.descendants.map(&:name) else [] end end |
#load_application ⇒ Object
50 51 52 |
# File 'lib/support/controller_generator.rb', line 50 def load_application Rails.application.try(:eager_load!) end |
#save_generate(controller_name) ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/support/controller_generator.rb', line 78 def save_generate(controller_name) begin yield rescue => e puts "Cannot create controller spec for #{ controller_name }. Reason #{ e. }" end end |
#select_action_controller_controller_names(app_action_controller_descendants_names, generator_options) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/support/controller_generator.rb', line 86 def select_action_controller_controller_names(app_action_controller_descendants_names, ) = .fetch('include') = .fetch('exclude') = .fetch('include_with_config') = .fetch('exclude_with_config') if .present? select_controller_names_generator_option_include(app_action_controller_descendants_names, ) elsif .present? select_controller_names_generator_option_exclude(app_action_controller_descendants_names, ) elsif .present? select_controller_names_generator_option_include_with_config(app_action_controller_descendants_names, ) elsif .present? select_controller_names_generator_option_exclude_with_config(app_action_controller_descendants_names, ) else select_controller_names_config(app_action_controller_descendants_names) end end |
#select_controller_names_config(app_action_controller_descendants_names) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/support/controller_generator.rb', line 131 def select_controller_names_config(app_action_controller_descendants_names) controller_names_config_included = ShouldaMatchmakers.configuration.models_included controller_names_config_excluded = ShouldaMatchmakers.configuration.models_excluded if controller_names_config_included.present? selected_controller_names_config = app_action_controller_descendants_names.map.select { |app_controller_name| controller_names_config_included.include? app_controller_name }.uniq.sort selected_controller_names_config elsif controller_names_config_excluded.present? selected_controller_names_config = app_action_controller_descendants_names.map.reject { |app_controller_name| controller_names_config_excluded.include? app_controller_name }.uniq.sort selected_controller_names_config else app_action_controller_descendants_names.map.uniq.sort end end |
#select_controller_names_generator_option_exclude(app_action_controller_descendants_names, exclude_controller_names) ⇒ Object
109 110 111 |
# File 'lib/support/controller_generator.rb', line 109 def select_controller_names_generator_option_exclude(app_action_controller_descendants_names, exclude_controller_names) app_action_controller_descendants_names.map(&:name).reject { |app_controller_name| exclude_controller_names.include? app_controller_name }.uniq.sort end |
#select_controller_names_generator_option_exclude_with_config(app_action_controller_descendants_names, exclude_with_config_controller_names) ⇒ Object
122 123 124 125 126 127 128 129 |
# File 'lib/support/controller_generator.rb', line 122 def select_controller_names_generator_option_exclude_with_config(app_action_controller_descendants_names, exclude_with_config_controller_names) selected_action_controller_controller_names = select_controller_names_config(app_action_controller_descendants_names) if selected_action_controller_controller_names.present? selected_action_controller_controller_names.map.reject { |app_controller_name| exclude_with_config_controller_names.include? app_controller_name }.uniq.sort else select_controller_names_generator_option_exclude(app_action_controller_descendants_names, exclude_with_config_controller_names).uniq.sort end end |
#select_controller_names_generator_option_include(app_action_controller_descendants_names, include_controller_names) ⇒ Object
105 106 107 |
# File 'lib/support/controller_generator.rb', line 105 def select_controller_names_generator_option_include(app_action_controller_descendants_names, include_controller_names) app_action_controller_descendants_names.map(&:name).select { |app_controller_name| include_controller_names.include? app_controller_name }.uniq.sort end |
#select_controller_names_generator_option_include_with_config(app_action_controller_descendants_names, include_with_config_controller_names) ⇒ Object
113 114 115 116 117 118 119 120 |
# File 'lib/support/controller_generator.rb', line 113 def select_controller_names_generator_option_include_with_config(app_action_controller_descendants_names, include_with_config_controller_names) selected_action_controller_controller_names = select_controller_names_config(app_action_controller_descendants_names) if selected_action_controller_controller_names.present? (selected_action_controller_controller_names + app_action_controller_descendants_names.map.select { |app_controller_name| include_with_config_controller_names.include? app_controller_name }).uniq.sort else select_controller_names_generator_option_include(app_action_controller_descendants_names, include_with_config_controller_names).uniq.sort end end |