File: lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  class: RedminePluginControllerGenerator#4
inherits from
  ControllerGenerator   
has properties
attribute: plugin_path [R] #5
attribute: plugin_name [R] #5
attribute: plugin_pretty_name [R] #5
method: initialize / 2 #7
method: destination_root #16
method: manifest #20

Class Hierarchy

Code

   1  require 'rails_generator/base'
   2  require 'rails_generator/generators/components/controller/controller_generator'
   3 
   4  class RedminePluginControllerGenerator < ControllerGenerator
   5    attr_reader :plugin_path, :plugin_name, :plugin_pretty_name
   6 
   7    def initialize(runtime_args, runtime_options = {})
   8      runtime_args = runtime_args.dup
   9      usage if runtime_args.empty?
  10      @plugin_name = "redmine_" + runtime_args.shift.underscore
  11      @plugin_pretty_name = plugin_name.titleize
  12      @plugin_path = "vendor/plugins/#{plugin_name}"
  13      super(runtime_args, runtime_options)
  14    end
  15 
  16    def destination_root
  17      File.join(Rails.root, plugin_path)
  18    end
  19 
  20    def manifest
  21      record do |m|
  22        # Check for class naming collisions.
  23        m.class_collisions class_path, "#{class_name}Controller", "#{class_name}ControllerTest", "#{class_name}Helper"
  24 
  25        # Controller, helper, views, and test directories.
  26        m.directory File.join('app/controllers', class_path)
  27        m.directory File.join('app/helpers', class_path)
  28        m.directory File.join('app/views', class_path, file_name)
  29        m.directory File.join('test/functional', class_path)
  30 
  31        # Controller class, functional test, and helper class.
  32        m.template 'controller.rb.erb',
  33                    File.join('app/controllers',
  34                              class_path,
  35                              "#{file_name}_controller.rb")
  36 
  37        m.template 'functional_test.rb.erb',
  38                    File.join('test/functional',
  39                              class_path,
  40                              "#{file_name}_controller_test.rb")
  41 
  42        m.template 'helper.rb.erb',
  43                    File.join('app/helpers',
  44                              class_path,
  45                              "#{file_name}_helper.rb")
  46 
  47        # View template for each action.
  48        actions.each do |action|
  49          path = File.join('app/views', class_path, file_name, "#{action}.html.erb")
  50          m.template 'view.html.erb', path,
  51            :assigns => { :action => action, :path => path }
  52        end
  53      end
  54    end
  55  end