class ShouldaMatchmakers::ControllerGenerator
Public Instance Methods
create_controller_matchmakers()
click to toggle source
# File lib/support/controller_generator.rb, line 44 def create_controller_matchmakers generator_options = options.to_hash load_application generate_controller_matchmakers(generator_options) end
generate_controller_matchmakers(generator_options)
click to toggle source
# File lib/support/controller_generator.rb, line 54 def generate_controller_matchmakers(generator_options) 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, generator_options) 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.expand_path('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()
click to toggle source
# 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()
click to toggle source
# File lib/support/controller_generator.rb, line 50 def load_application Rails.application.try(:eager_load!) end
save_generate(controller_name) { || ... }
click to toggle source
# 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.message }" end end
select_action_controller_controller_names(app_action_controller_descendants_names, generator_options)
click to toggle source
# File lib/support/controller_generator.rb, line 86 def select_action_controller_controller_names(app_action_controller_descendants_names, generator_options) generator_options_include = generator_options.fetch('include') generator_options_exclude = generator_options.fetch('exclude') generator_options_include_with_config = generator_options.fetch('include_with_config') generator_options_exclude_with_config = generator_options.fetch('exclude_with_config') if generator_options_include.present? select_controller_names_generator_option_include(app_action_controller_descendants_names, generator_options_include) elsif generator_options_exclude.present? select_controller_names_generator_option_exclude(app_action_controller_descendants_names, generator_options_exclude) elsif generator_options_include_with_config.present? select_controller_names_generator_option_include_with_config(app_action_controller_descendants_names, generator_options_include_with_config) elsif generator_options_exclude_with_config.present? select_controller_names_generator_option_exclude_with_config(app_action_controller_descendants_names, generator_options_exclude_with_config) else select_controller_names_config(app_action_controller_descendants_names) end end
select_controller_names_config(app_action_controller_descendants_names)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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