123456789_123456789_123456789_123456789_123456789_

Module: Rails::Generators::ResourceHelpers

Do not use. This module is for internal use only.

Overview

Deal with controller names on scaffold and add some helpers to deal with ActiveModel.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Class Method Details

.included(base)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 12

def self.included(base) # :nodoc:
  base.include(Rails::Generators::ModelHelpers)
  base.class_option :model_name, type: :string, desc: "ModelName to be used"
end

Instance Attribute Details

#controller_file_name (readonly, private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 30

attr_reader :controller_name, :controller_file_name

#controller_name (readonly, private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 30

attr_reader :controller_name, :controller_file_name

Instance Method Details

#assign_controller_names!(name) (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 40

def assign_controller_names!(name)
  @controller_name = name
  @controller_class_path = name.include?("/") ? name.split("/") : name.split("::")
  @controller_class_path.map!(&:underscore)
  @controller_file_name = @controller_class_path.pop
end

#controller_class_name (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 51

def controller_class_name
  (controller_class_path + [controller_file_name]).map!(&:camelize).join("::")
end

#controller_class_path (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 32

def controller_class_path
  if options[:model_name]
    @controller_class_path
  else
    class_path
  end
end

#controller_file_path (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 47

def controller_file_path
  @controller_file_path ||= (controller_class_path + [controller_file_name]).join("/")
end

#controller_i18n_scope (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 55

def controller_i18n_scope
  @controller_i18n_scope ||= controller_file_path.tr("/", ".")
end

#initialize(*args)

Set controller variables on initialization.

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 18

def initialize(*args) # :nodoc:
  super
  controller_name = name
  if options[:model_name]
    self.name = options[:model_name]
    assign_names!(name)
  end

  assign_controller_names!(controller_name.pluralize)
end

#orm_class (private)

Loads the ORM::Generators::ActiveModel class. This class is responsible to tell scaffold entities how to generate a specific method for the ORM. Check ActiveModel for more information.

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 62

def orm_class
  @orm_class ||= begin
    # Raise an error if the class_option :orm was not defined.
    unless self.class.class_options[:orm]
      raise "You need to have :orm as class option to invoke orm_class and orm_instance"
    end

    begin
      "#{options[:orm].to_s.camelize}::Generators::ActiveModel".constantize
    rescue NameError
      Rails::Generators::ActiveModel
    end
  end
end

#orm_instance(name = singular_table_name) (private)

Initialize ORM::Generators::ActiveModel to access instance methods.

[ GitHub ]

  
# File 'railties/lib/rails/generators/resource_helpers.rb', line 78

def orm_instance(name = singular_table_name)
  @orm_instance ||= orm_class.new(name)
end