diff options
author | schneems <richard.schneeman@gmail.com> | 2012-06-03 15:07:11 -0500 |
---|---|---|
committer | schneems <richard.schneeman@gmail.com> | 2012-06-03 15:07:11 -0500 |
commit | e5b39862cb4f8f3097cc8ab2dc606ddb1bd1febb (patch) | |
tree | feee3d3ef6371b3e5207aa3087675db2b62c30d5 | |
parent | 0460949070d4105810d2c39e6e85fcf93034a861 (diff) | |
download | rails-e5b39862cb4f8f3097cc8ab2dc606ddb1bd1febb.tar.gz rails-e5b39862cb4f8f3097cc8ab2dc606ddb1bd1febb.tar.bz2 rails-e5b39862cb4f8f3097cc8ab2dc606ddb1bd1febb.zip |
add convenience methods for checking migrations
if a rails project needs to be migrated ActiveRecord::Migrator.needs_migration? will be true or false if the current version matches the last version.
-rw-r--r-- | activerecord/lib/active_record/migration.rb | 8 | ||||
-rw-r--r-- | activerecord/test/cases/migration_test.rb | 15 |
2 files changed, 23 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/migration.rb b/activerecord/lib/active_record/migration.rb index ac4f53c774..2975b045e7 100644 --- a/activerecord/lib/active_record/migration.rb +++ b/activerecord/lib/active_record/migration.rb @@ -605,6 +605,14 @@ module ActiveRecord end end + def needs_migration? + current_version != last_version + end + + def last_version + migrations(migrations_paths).last.try(:version)||0 + end + def proper_table_name(name) # Use the Active Record objects own table_name, or pre/suffix from ActiveRecord::Base if name is a symbol/string name.table_name rescue "#{ActiveRecord::Base.table_name_prefix}#{name}#{ActiveRecord::Base.table_name_suffix}" diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index 5d1bad0d54..45c847bae8 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -56,6 +56,21 @@ class MigrationTest < ActiveRecord::TestCase Person.reset_column_information end + def test_migrator_versions + migrations_path = MIGRATIONS_ROOT + "/valid" + ActiveRecord::Migrator.migrations_paths = migrations_path + + ActiveRecord::Migrator.up(migrations_path) + assert_equal 3, ActiveRecord::Migrator.current_version + assert_equal 3, ActiveRecord::Migrator.last_version + assert_equal false, ActiveRecord::Migrator.needs_migration? + + ActiveRecord::Migrator.down(MIGRATIONS_ROOT + "/valid") + assert_equal 0, ActiveRecord::Migrator.current_version + assert_equal 3, ActiveRecord::Migrator.last_version + assert_equal true, ActiveRecord::Migrator.needs_migration? + end + def test_create_table_with_force_true_does_not_drop_nonexisting_table if Person.connection.table_exists?(:testings2) Person.connection.drop_table :testings2 |