diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-01 17:08:01 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-01 17:08:01 -0800 |
commit | 3ec212e3c9c815e9993cbea409c60774ea75cd30 (patch) | |
tree | 56f77db136192f65eb4e3a1417d8b989e56cfe37 /activerecord | |
parent | c15c14563e6604aab232336b16e14f1f235cc19d (diff) | |
download | rails-3ec212e3c9c815e9993cbea409c60774ea75cd30.tar.gz rails-3ec212e3c9c815e9993cbea409c60774ea75cd30.tar.bz2 rails-3ec212e3c9c815e9993cbea409c60774ea75cd30.zip |
rolling out migrated_at until I can fix the build
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 18 | ||||
-rw-r--r-- | activerecord/lib/active_record/migration.rb | 18 | ||||
-rw-r--r-- | activerecord/lib/active_record/schema.rb | 19 | ||||
-rw-r--r-- | activerecord/lib/active_record/schema_dumper.rb | 16 | ||||
-rw-r--r-- | activerecord/test/cases/ar_schema_test.rb | 35 | ||||
-rw-r--r-- | activerecord/test/cases/migration_test.rb | 52 | ||||
-rw-r--r-- | activerecord/test/cases/schema_dumper_test.rb | 19 |
8 files changed, 25 insertions, 156 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index e6c6883fc7..f46db909ba 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,9 +1,5 @@ *Rails 3.1.0 (unreleased)* -* The `schema_migrations` table now contains a column `name` which stores the -name of the migration that was executed, and `migrated_at` which stores the date -when the migration was executed. (Thanks Josh Susser!) - * ActiveRecord::Base#dup and ActiveRecord::Base#clone semantics have changed to closer match normal Ruby dup and clone semantics. diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb index de7d358df9..4e770c37da 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -422,21 +422,9 @@ module ActiveRecord def initialize_schema_migrations_table sm_table = ActiveRecord::Migrator.schema_migrations_table_name - if table_exists?(sm_table) - cols = columns(sm_table).collect { |col| col.name } - unless cols.include?("migrated_at") - add_column sm_table, :migrated_at, :datetime - update "UPDATE #{quote_table_name(sm_table)} SET migrated_at = '#{quoted_date(Time.now)}' WHERE migrated_at IS NULL" - change_column sm_table, :migrated_at, :datetime, :null => false - end - unless cols.include?("name") - add_column sm_table, :name, :string, :null => false, :default => "" - end - else + unless table_exists?(sm_table) create_table(sm_table, :id => false) do |schema_migrations_table| schema_migrations_table.column :version, :string, :null => false - schema_migrations_table.column :name, :string, :null => false, :default => "" - schema_migrations_table.column :migrated_at, :datetime, :null => false end add_index sm_table, :version, :unique => true, :name => "#{Base.table_name_prefix}unique_schema_migrations#{Base.table_name_suffix}" @@ -464,7 +452,7 @@ module ActiveRecord end unless migrated.include?(version) - execute "INSERT INTO #{sm_table} (version,migrated_at) VALUES ('#{version}','#{Time.now.to_s(:db)}')" + execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')" end inserted = Set.new @@ -472,7 +460,7 @@ module ActiveRecord if inserted.include?(v) raise "Duplicate migration #{v}. Please renumber your migrations to resolve the conflict." elsif v < version - execute "INSERT INTO #{sm_table} (version,migrated_at) VALUES ('#{v}','#{Time.now.to_s(:db)}')" + execute "INSERT INTO #{sm_table} (version) VALUES ('#{v}')" inserted << v end end diff --git a/activerecord/lib/active_record/migration.rb b/activerecord/lib/active_record/migration.rb index d2ebf656cb..f6321f1499 100644 --- a/activerecord/lib/active_record/migration.rb +++ b/activerecord/lib/active_record/migration.rb @@ -628,7 +628,7 @@ module ActiveRecord raise UnknownMigrationVersionError.new(@target_version) if target.nil? unless (up? && migrated.include?(target.version.to_i)) || (down? && !migrated.include?(target.version.to_i)) target.migrate(@direction) - record_version_state_after_migrating(target) + record_version_state_after_migrating(target.version) end end @@ -664,7 +664,7 @@ module ActiveRecord begin ddl_transaction do migration.migrate(@direction) - record_version_state_after_migrating(migration) + record_version_state_after_migrating(migration.version) end rescue => e canceled_msg = Base.connection.supports_ddl_transactions? ? "this and " : "" @@ -690,20 +690,16 @@ module ActiveRecord end private - def record_version_state_after_migrating(target) + def record_version_state_after_migrating(version) table = Arel::Table.new(self.class.schema_migrations_table_name) @migrated_versions ||= [] if down? - @migrated_versions.delete(target.version) - table.where(table["version"].eq(target.version.to_s)).delete + @migrated_versions.delete(version) + table.where(table["version"].eq(version.to_s)).delete else - @migrated_versions.push(target.version).sort! - table.insert( - table["version"] => target.version.to_s, - table["name"] => File.basename(target.filename,'.rb').gsub(/^\d+_/,''), - table["migrated_at"] => Time.now - ) + @migrated_versions.push(version).sort! + table.insert table["version"] => version.to_s end end diff --git a/activerecord/lib/active_record/schema.rb b/activerecord/lib/active_record/schema.rb index 9a47fd3b84..c6bb5c1961 100644 --- a/activerecord/lib/active_record/schema.rb +++ b/activerecord/lib/active_record/schema.rb @@ -46,24 +46,13 @@ module ActiveRecord # ... # end def self.define(info={}, &block) - Base.connection.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) - initialize_schema_migrations_table - schema = new schema.instance_eval(&block) - assume_migrated_upto_version(info[:version], schema.migrations_path) unless info[:version].blank? - end - - def migration(version, name="", options={}) - name, options = "", name if name.is_a?(Hash) - - table = Arel::Table.new(ActiveRecord::Migrator.schema_migrations_table_name) - table.insert( - table["version"] => version, - table["name"] => name, - table["migrated_at"] => Time.now - ) + unless info[:version].blank? + initialize_schema_migrations_table + assume_migrated_upto_version(info[:version], schema.migrations_path) + end end end end diff --git a/activerecord/lib/active_record/schema_dumper.rb b/activerecord/lib/active_record/schema_dumper.rb index 794a354917..e30b481fe1 100644 --- a/activerecord/lib/active_record/schema_dumper.rb +++ b/activerecord/lib/active_record/schema_dumper.rb @@ -24,7 +24,6 @@ module ActiveRecord def dump(stream) header(stream) - migrations(stream) tables(stream) trailer(stream) stream @@ -35,9 +34,12 @@ module ActiveRecord def initialize(connection) @connection = connection @types = @connection.native_database_types + @version = Migrator::current_version rescue nil end def header(stream) + define_params = @version ? ":version => #{@version}" : "" + stream.puts <<HEADER # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to @@ -51,7 +53,7 @@ module ActiveRecord # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define do +ActiveRecord::Schema.define(#{define_params}) do HEADER end @@ -60,16 +62,6 @@ HEADER stream.puts "end" end - def migrations(stream) - rows = @connection.select_all("SELECT * FROM #{@connection.quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name)}") - rows.each do |migration| - line = %Q( migration "#{migration['version']}") - line << %Q(, "#{migration['name']}") unless migration['name'].blank? - stream.puts line - end - stream.puts "" - end - def tables(stream) @connection.tables.sort.each do |tbl| next if ['schema_migrations', ignore_tables].flatten.any? do |ignored| diff --git a/activerecord/test/cases/ar_schema_test.rb b/activerecord/test/cases/ar_schema_test.rb index df51a6e4ba..588adc38e3 100644 --- a/activerecord/test/cases/ar_schema_test.rb +++ b/activerecord/test/cases/ar_schema_test.rb @@ -39,39 +39,4 @@ if ActiveRecord::Base.connection.supports_migrations? end end - class ActiveRecordSchemaMigrationsTest < ActiveRecordSchemaTest - def setup - super - @sm_table = ActiveRecord::Migrator.schema_migrations_table_name - @connection.execute "DELETE FROM #{@connection.quote_table_name(@sm_table)}" - end - - def test_migration_adds_row_to_migrations_table - schema = ActiveRecord::Schema.new - schema.migration("123001") - schema.migration("123002", "add_magic_power_to_unicorns") - rows = @connection.select_all("SELECT * FROM #{@connection.quote_table_name(@sm_table)}") - assert_equal 2, rows.length - - assert_equal "123001", rows[0]["version"] - assert_equal "", rows[0]["name"] - assert_not_nil(rows[0]["migrated_at"]) - - assert_equal "123002", rows[1]["version"] - assert_equal "add_magic_power_to_unicorns", rows[1]["name"] - assert_not_nil(rows[1]["migrated_at"]) - end - - def test_define_clears_schema_migrations - assert_nothing_raised do - ActiveRecord::Schema.define do - migration("123001") - end - ActiveRecord::Schema.define do - migration("123001") - end - end - end - end - end diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index b698a5a3cf..3037d73a1b 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -27,46 +27,22 @@ if ActiveRecord::Base.connection.supports_migrations? end class MigrationTableAndIndexTest < ActiveRecord::TestCase - def setup - @conn = ActiveRecord::Base.connection - @conn.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) if @conn.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name) - end + def test_add_schema_info_respects_prefix_and_suffix + conn = ActiveRecord::Base.connection - def test_add_schema_migrations_respects_prefix_and_suffix + conn.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) if conn.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name) # Use shorter prefix and suffix as in Oracle database identifier cannot be larger than 30 characters ActiveRecord::Base.table_name_prefix = 'p_' ActiveRecord::Base.table_name_suffix = '_s' - @conn.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) if @conn.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name) + conn.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) if conn.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name) - @conn.initialize_schema_migrations_table + conn.initialize_schema_migrations_table - assert_equal "p_unique_schema_migrations_s", @conn.indexes(ActiveRecord::Migrator.schema_migrations_table_name)[0][:name] + assert_equal "p_unique_schema_migrations_s", conn.indexes(ActiveRecord::Migrator.schema_migrations_table_name)[0][:name] ensure ActiveRecord::Base.table_name_prefix = "" ActiveRecord::Base.table_name_suffix = "" end - - def test_schema_migrations_columns - @conn.initialize_schema_migrations_table - - columns = @conn.columns(ActiveRecord::Migrator.schema_migrations_table_name).collect(&:name) - %w[version name migrated_at].each { |col| assert columns.include?(col) } - end - - def test_add_name_and_migrated_at_to_exisiting_schema_migrations - sm_table = ActiveRecord::Migrator.schema_migrations_table_name - @conn.create_table(sm_table, :id => false) do |schema_migrations_table| - schema_migrations_table.column :version, :string, :null => false - end - @conn.insert "INSERT INTO #{@conn.quote_table_name(sm_table)} (version) VALUES (100)" - @conn.insert "INSERT INTO #{@conn.quote_table_name(sm_table)} (version) VALUES (200)" - - @conn.initialize_schema_migrations_table - - rows = @conn.select_all("SELECT * FROM #{@conn.quote_table_name(sm_table)}") - assert rows[0].has_key?("name") - assert rows[0].has_key?("migrated_at") - end end class MigrationTest < ActiveRecord::TestCase @@ -1462,21 +1438,6 @@ if ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Base.table_name_suffix = "" end - def test_migration_row_includes_name_and_timestamp - conn = ActiveRecord::Base.connection - sm_table = ActiveRecord::Migrator.schema_migrations_table_name - - ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid") - - rows = conn.select_all("SELECT * FROM #{conn.quote_table_name(sm_table)}") - rows.each do |row| - assert_not_nil(row["migrated_at"], "missing migrated_at") - end - assert_equal "people_have_last_names", rows[0]["name"] - assert_equal "we_need_reminders", rows[1]["name"] - assert_equal "innocent_jointable", rows[2]["name"] - end - def test_proper_table_name assert_equal "table", ActiveRecord::Migrator.proper_table_name('table') assert_equal "table", ActiveRecord::Migrator.proper_table_name(:table) @@ -2132,3 +2093,4 @@ if ActiveRecord::Base.connection.supports_migrations? end end end + diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index 7914ee0a6f..9b2c7c00df 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -17,25 +17,6 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_no_match %r{create_table "schema_migrations"}, output end - def test_schema_dump_includes_migrations - $".delete_if do |fname| - fname == (MIGRATIONS_ROOT + "/valid/1_people_have_last_names.rb") - end - - conn = ActiveRecord::Base.connection - sm_table = ActiveRecord::Migrator.schema_migrations_table_name - conn.execute "DELETE FROM #{conn.quote_table_name(sm_table)}" - conn.remove_column "people", "last_name" rescue nil - conn.drop_table "reminders" rescue nil - conn.drop_table "people_reminders" rescue nil - ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid") - - output = standard_dump - assert_match %r{migration "1", "people_have_last_names"}, output - assert_match %r{migration "2", "we_need_reminders"}, output - assert_match %r{migration "3", "innocent_jointable"}, output - end - def test_schema_dump_excludes_sqlite_sequence output = standard_dump assert_no_match %r{create_table "sqlite_sequence"}, output |