Class: Schofield::Generators::Schofield
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Schofield::Generators::Schofield
- Defined in:
- lib/generators/schofield/schofield_generator.rb
Instance Method Summary collapse
- #generate ⇒ Object
- #generate_controllers ⇒ Object
- #generate_models ⇒ Object
- #generate_navigation ⇒ Object
- #generate_routes ⇒ Object
- #generate_tables ⇒ Object
- #generate_views ⇒ Object
Instance Method Details
#generate ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/generators/schofield/schofield_generator.rb', line 22 def generate Responses.generator = self Responses.re_ask = [:ask_questions] Level.tables_to_ignore = tables_to_ignore Levels.models = models Responses.save Association.reference_parents Responses.save Association.report end |
#generate_controllers ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/generators/schofield/schofield_generator.rb', line 37 def generate_controllers Levels.all.select(&:controllers?).each do |level| source = level.join? ? 'join_controller.erb' : 'controller.erb' destination = File.join('app/controllers/admin', "#{level.name.tableize}_controller.rb") template_with_context(source, Proc.new{level}, destination) end end |
#generate_models ⇒ Object
56 57 58 59 60 61 |
# File 'lib/generators/schofield/schofield_generator.rb', line 56 def generate_models Levels.all.select(&:models?).each do |level| destination = File.join('app/models', "#{level.name}.rb") template_with_context('model.erb', Proc.new{level}, destination) end end |
#generate_navigation ⇒ Object
63 64 65 |
# File 'lib/generators/schofield/schofield_generator.rb', line 63 def inject_into_file(File.join(Rails.root, 'app/views/admin/shared', '_navigation.haml'), Navigation.generate, :after => /- if current_user\n/) end |
#generate_routes ⇒ Object
33 34 35 |
# File 'lib/generators/schofield/schofield_generator.rb', line 33 def generate_routes inject_into_file(File.join(Rails.root, 'config', 'routes.rb'), Routes.generate, :before => /end\s*\Z/) end |
#generate_tables ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/generators/schofield/schofield_generator.rb', line 67 def generate_tables tables = [] Levels.all.select(&:tables?).each do |level| columns_level = level.subclass? ? level.superclass : level columns = columns_level.attributes.select{ |a| columns_level.form_field?(a) && !a.text? }.sort_by(&:weight).map(&:to_column) if level.nested? tables << <<-STRING.gsub(/^ {12}/, '') def #{level.name.pluralize}_table [ #{columns.join(",\n ")} ] end STRING else tables << <<-STRING.gsub(/^ {12}/, '') def render_#{level.name.pluralize} collection table_renderer(:#{level.name.pluralize}, collection).render( #{columns.join(",\n ")} ) end STRING end end create_file 'app/helpers/admin/table_definitions_helper.rb' do "module Admin::TableDefinitionsHelper\n\n#{tables.join("\n\n")}\nend" end end |
#generate_views ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/generators/schofield/schofield_generator.rb', line 45 def generate_views Levels.all.select(&:views?).each do |level| template_with_context('form.erb', Proc.new{level}, view_path(level, '_form.haml')) create_file(view_path(level, 'new.haml'), %q(= render :partial => 'form', :layout => 'admin/shared/module_layout')) template_with_context('show.erb', Proc.new{level}, view_path(level, 'show.haml')) if !level.nested? template_with_context('index.erb', Proc.new{level}, view_path(level, 'index.haml')) end end end |