aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails_generator/generators/components
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-02-25 19:13:04 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-02-25 19:13:04 +0000
commit63f188ceb01fa02487946e21ef623218f5074264 (patch)
tree5ad5978fce039e52ab694dda7d7689b89e080501 /railties/lib/rails_generator/generators/components
parentef338e4de4e5a9fa8d1c3b3c93cc59d24c42ec37 (diff)
downloadrails-63f188ceb01fa02487946e21ef623218f5074264.tar.gz
rails-63f188ceb01fa02487946e21ef623218f5074264.tar.bz2
rails-63f188ceb01fa02487946e21ef623218f5074264.zip
Added that script/generate model will now automatically create a migration file for the model created. This can be turned off by calling the generator with --skip-migration [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3644 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties/lib/rails_generator/generators/components')
-rw-r--r--railties/lib/rails_generator/generators/components/model/USAGE4
-rw-r--r--railties/lib/rails_generator/generators/components/model/model_generator.rb16
-rw-r--r--railties/lib/rails_generator/generators/components/model/templates/migration.rb11
3 files changed, 30 insertions, 1 deletions
diff --git a/railties/lib/rails_generator/generators/components/model/USAGE b/railties/lib/rails_generator/generators/components/model/USAGE
index 9d5a2fd749..57156ea535 100644
--- a/railties/lib/rails_generator/generators/components/model/USAGE
+++ b/railties/lib/rails_generator/generators/components/model/USAGE
@@ -5,7 +5,8 @@ Description:
given in CamelCase or under_score and should not be suffixed with 'Model'.
The generator creates a model class in app/models, a test suite in
- test/unit, and test fixtures in test/fixtures/singular_name.yml.
+ test/unit, test fixtures in test/fixtures/singular_name.yml, and a migration
+ in db/migrate.
Example:
./script/generate model Account
@@ -14,4 +15,5 @@ Example:
Model: app/models/account.rb
Test: test/unit/account_test.rb
Fixtures: test/fixtures/accounts.yml
+ Migration: db/migrate/XXX_add_accounts.rb
diff --git a/railties/lib/rails_generator/generators/components/model/model_generator.rb b/railties/lib/rails_generator/generators/components/model/model_generator.rb
index a978b96b1c..5e9aa882f3 100644
--- a/railties/lib/rails_generator/generators/components/model/model_generator.rb
+++ b/railties/lib/rails_generator/generators/components/model/model_generator.rb
@@ -1,4 +1,6 @@
class ModelGenerator < Rails::Generator::NamedBase
+ default_options :skip_migration => false
+
def manifest
record do |m|
# Check for class naming collisions.
@@ -13,6 +15,20 @@ class ModelGenerator < Rails::Generator::NamedBase
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")
m.template 'fixtures.yml', File.join('test/fixtures', class_path, "#{table_name}.yml")
+
+ unless options[:skip_migration]
+ m.migration_template 'migration.rb', 'db/migrate', :assigns => {
+ :migration_name => "Add#{class_name.pluralize}"
+ }
+ end
end
end
+
+ protected
+ def add_options!(opt)
+ opt.separator ''
+ opt.separator 'Options:'
+ opt.on("--skip-migration",
+ "Don't generate a migration file for this model") { |options[:skip_migration]| }
+ end
end
diff --git a/railties/lib/rails_generator/generators/components/model/templates/migration.rb b/railties/lib/rails_generator/generators/components/model/templates/migration.rb
new file mode 100644
index 0000000000..023c07d2f6
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/model/templates/migration.rb
@@ -0,0 +1,11 @@
+class <%= migration_name %> < ActiveRecord::Migration
+ def self.up
+ create_table "<%= table_name %>" do |t|
+ # t.column "name", :string
+ end
+ end
+
+ def self.down
+ drop_table "<%= table_name %>"
+ end
+end