4bdf703ab2
This release upgrades Instiki to Rails 2.3.4, which patches two security holes in Rails. See http://weblog.rubyonrails.org/2009/9/4/ruby-on-rails-2-3-4 There are also some new features, and the usual boatload of bugfixes. See the CHANGELOG for details.
53 lines
1.9 KiB
Ruby
53 lines
1.9 KiB
Ruby
class ModelGenerator < Rails::Generator::NamedBase
|
|
default_options :skip_timestamps => false, :skip_migration => false, :skip_fixture => false
|
|
|
|
def manifest
|
|
record do |m|
|
|
# Check for class naming collisions.
|
|
m.class_collisions class_name, "#{class_name}Test"
|
|
|
|
# Model, test, and fixture directories.
|
|
m.directory File.join('app/models', class_path)
|
|
m.directory File.join('test/unit', class_path)
|
|
m.directory File.join('test/fixtures', class_path)
|
|
|
|
# Model class, unit test, and fixtures.
|
|
m.template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
|
m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb")
|
|
|
|
unless options[:skip_fixture]
|
|
m.template 'fixtures.yml', File.join('test/fixtures', "#{table_name}.yml")
|
|
end
|
|
|
|
migration_file_path = file_path.gsub(/\//, '_')
|
|
migration_name = class_name
|
|
if ActiveRecord::Base.pluralize_table_names
|
|
migration_name = migration_name.pluralize
|
|
migration_file_path = migration_file_path.pluralize
|
|
end
|
|
|
|
unless options[:skip_migration]
|
|
m.migration_template 'migration.rb', 'db/migrate', :assigns => {
|
|
:migration_name => "Create#{migration_name.gsub(/::/, '')}"
|
|
}, :migration_file_name => "create_#{migration_file_path}"
|
|
end
|
|
end
|
|
end
|
|
|
|
protected
|
|
def banner
|
|
"Usage: #{$0} #{spec.name} ModelName [field:type, field:type]"
|
|
end
|
|
|
|
def add_options!(opt)
|
|
opt.separator ''
|
|
opt.separator 'Options:'
|
|
opt.on("--skip-timestamps",
|
|
"Don't add timestamps to the migration file for this model") { |v| options[:skip_timestamps] = v }
|
|
opt.on("--skip-migration",
|
|
"Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
|
|
opt.on("--skip-fixture",
|
|
"Don't generation a fixture file for this model") { |v| options[:skip_fixture] = v}
|
|
end
|
|
end
|