class Napa::CLI::Model
Note: This currently does not support namespaced model creation.
Public Instance Methods
generate_model()
click to toggle source
# File lib/napa/cli/model.rb, line 33 def generate_model # In order to check for class collisions, the Grape environment needs to be loaded. say 'Generating model...' self.class.source_root "#{File.dirname(__FILE__)}/templates" create_migration_file create_model_file create_factory_file create_model_spec_file say 'Done!', :green end
parse_attributes!()
click to toggle source
# File lib/napa/cli/model.rb, line 27 def parse_attributes! self.attributes = (attributes || []).map do |attr| GeneratedAttribute.parse(attr) end end
Protected Instance Methods
attributes_with_index()
click to toggle source
# File lib/napa/cli/model.rb, line 120 def attributes_with_index attributes.select { |a| !a.reference? && a.has_index? } end
create_factory_file()
click to toggle source
# File lib/napa/cli/model.rb, line 64 def create_factory_file template factory_template, "#{factory_output_directory}/#{table_name}.rb" end
create_migration_file()
click to toggle source
# File lib/napa/cli/model.rb, line 50 def create_migration_file return unless options[:migration] && options[:parent].nil? attributes.each { |a| a.attr_options.delete(:index) if a.reference? && !a.has_index? } if options[:indexes] == false # This does not currently check for similar migrations. # This can be done by overriding the CreateFile Thor action and # implementing the exists? and on_conflict_behavior methods. template migration_template, "#{migration_output_directory}/#{version}_#{migration_name}.rb" end
create_model_file()
click to toggle source
# File lib/napa/cli/model.rb, line 60 def create_model_file template model_template, "#{model_output_directory}/#{model_name}.rb" end
create_model_spec_file()
click to toggle source
# File lib/napa/cli/model.rb, line 68 def create_model_spec_file template model_spec_template, "#{model_spec_output_directory}/#{model_name}_spec.rb" end
factory_output_directory()
click to toggle source
# File lib/napa/cli/model.rb, line 108 def factory_output_directory './spec/factories' end
factory_template()
click to toggle source
# File lib/napa/cli/model.rb, line 104 def factory_template "model/spec/factories/factory.rb.tt" end
migration_name()
click to toggle source
# File lib/napa/cli/model.rb, line 76 def migration_name "create_#{table_name}" end
migration_output_directory()
click to toggle source
# File lib/napa/cli/model.rb, line 92 def migration_output_directory './db/migrate' end
migration_template()
click to toggle source
# File lib/napa/cli/model.rb, line 84 def migration_template "model/db/migrate/migration.rb.tt" end
model_name()
click to toggle source
# File lib/napa/cli/model.rb, line 72 def model_name name.underscore end
model_output_directory()
click to toggle source
# File lib/napa/cli/model.rb, line 100 def model_output_directory './app/models' end
model_spec_output_directory()
click to toggle source
# File lib/napa/cli/model.rb, line 116 def model_spec_output_directory './spec/models' end
model_spec_template()
click to toggle source
# File lib/napa/cli/model.rb, line 112 def model_spec_template "model/spec/models/model_spec.rb.tt" end
model_template()
click to toggle source
# File lib/napa/cli/model.rb, line 96 def model_template "model/app/models/model.rb.tt" end
parent_class_name()
click to toggle source
# File lib/napa/cli/model.rb, line 88 def parent_class_name options[:parent] || "ActiveRecord::Base" end
table_name()
click to toggle source
# File lib/napa/cli/model.rb, line 80 def table_name model_name.pluralize end
version()
click to toggle source
# File lib/napa/cli/model.rb, line 46 def version Time.now.utc.strftime("%Y%m%d%H%M%S") end