class CustomAttributes::Generators::InitializeGenerator

Public Class Methods

next_migration_number(path) click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 11
def self.next_migration_number(path)
  unless @prev_migration_nr
    @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
  else
    @prev_migration_nr += 1
  end
  @prev_migration_nr.to_s
end

Public Instance Methods

copy_inline_editing_js_file() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 45
def copy_inline_editing_js_file
  template "custom_attributes_inline_editing.js.erb", "public/javascripts/vendors/custom_attributes/inline_editing.js"
end
create_base_models() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 28
def create_base_models
  template "custom_attribute_definition_model.rb", "app/models/#{file_name}_custom_attribute_definition.rb"
  template "custom_attribute_value_model.rb", "app/models/#{file_name}_custom_attribute_value.rb"
end
create_controllers() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 33
def create_controllers
  template "custom_attribute_definitions_controller.rb", "app/controllers/#{file_name}_custom_attribute_definitions_controller.rb"
  template "custom_attribute_values_controller.rb", "app/controllers/#{file_name}_custom_attribute_values_controller.rb"
end
create_custom_attribute_concern() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 53
def create_custom_attribute_concern
  template "custom_attributes_concern.rb", "app/models/concerns/#{file_name}_custom_attributes.rb"
end
create_derived_custom_attribute_values() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 38
def create_derived_custom_attribute_values
  create_custom_attribute_value_sub_class("String")
  create_custom_attribute_value_sub_class("Integer")
  create_custom_attribute_value_sub_class("Double")
  create_custom_attribute_value_sub_class("DateTime")
end
create_migrations() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 49
def create_migrations
  migration_template "migration.rb", "db/migrate/create_custom_attributes_for_#{file_name}.rb"
end
create_views_and_helpers() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 20
def create_views_and_helpers
  #TODO: verify if all views are being copied
  template "view.html.erb", "app/views/#{file_name}_custom_attribute_values/_#{file_name}_custom_attribute.html.erb"

  #TODO: there should be a way that does NOT require copying the helper
  template "application_helper.rb", "app/helpers/custom_attributes/custom_attributes_helper.rb"
end
include_concern_in_model() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 57
      def include_concern_in_model
        #TODO: Is this fool-proof?
        inject_into_file "app/models/#{file_name}.rb", after: "ActiveRecord::Base\n" do <<-BLOCK.gsub(/^ {4}/, '')
          include #{name}CustomAttributes
          BLOCK
        end
      end
sub_class() click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 65
def sub_class
  @sub_class
end

Private Instance Methods

create_custom_attribute_value_sub_class(sub_class) click to toggle source
# File lib/generators/custom_attributes/initialize_generator.rb, line 70
def create_custom_attribute_value_sub_class (sub_class)
  @sub_class = sub_class
  template "custom_attribute_value_sub_class_model.rb", "app/models/#{file_name}_custom_attribute_#{sub_class.underscore}_value.rb"
  template "custom_attribute_value_sub_class.html.erb", "app/views/#{file_name}_custom_attribute_#{sub_class.underscore}_values/_#{file_name}_custom_attribute_#{sub_class.underscore}_value.html.erb"
end