Class: CustomAttributes::Generators::InitializeGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/custom_attributes/initialize_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(path) ⇒ Object



11
12
13
14
15
16
17
18
# 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

Instance Method Details

#copy_inline_editing_js_fileObject



45
46
47
# 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_modelsObject



28
29
30
31
# 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_controllersObject



33
34
35
36
# 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_concernObject



53
54
55
# 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_valuesObject



38
39
40
41
42
43
# 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_migrationsObject



49
50
51
# 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_helpersObject



20
21
22
23
24
25
26
# 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_modelObject



57
58
59
60
61
62
63
# 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_classObject



65
66
67
# File 'lib/generators/custom_attributes/initialize_generator.rb', line 65

def sub_class
  @sub_class
end