aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2012-05-16 15:08:17 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2012-05-16 15:19:59 -0700
commita57990ff51800bb05cebaf102e7d288487c98bd8 (patch)
tree8d30639532067f603e6be2b5d18b8e9e8b5f02b3 /activerecord
parentd6e4c06a8a995a572237ebca96fa1d320e2418b3 (diff)
downloadrails-a57990ff51800bb05cebaf102e7d288487c98bd8.tar.gz
rails-a57990ff51800bb05cebaf102e7d288487c98bd8.tar.bz2
rails-a57990ff51800bb05cebaf102e7d288487c98bd8.zip
Call methods on the correct instance in AR::Schema.define
Now that migrations support instance methods, we should use the same instance rather than relying on delegation to a global instance. This allows subclassing AR::Schema.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/schema.rb17
-rw-r--r--activerecord/test/cases/ar_schema_test.rb7
2 files changed, 17 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/schema.rb b/activerecord/lib/active_record/schema.rb
index d815ab05ac..599e68379a 100644
--- a/activerecord/lib/active_record/schema.rb
+++ b/activerecord/lib/active_record/schema.rb
@@ -34,6 +34,15 @@ module ActiveRecord
ActiveRecord::Migrator.migrations_paths
end
+ def define(info, &block)
+ instance_eval(&block)
+
+ unless info[:version].blank?
+ initialize_schema_migrations_table
+ assume_migrated_upto_version(info[:version], migrations_paths)
+ end
+ end
+
# Eval the given block. All methods available to the current connection
# adapter are available within the block, so you can easily use the
# database definition DSL to build up your schema (+create_table+,
@@ -46,13 +55,7 @@ module ActiveRecord
# ...
# end
def self.define(info={}, &block)
- schema = new
- schema.instance_eval(&block)
-
- unless info[:version].blank?
- initialize_schema_migrations_table
- assume_migrated_upto_version(info[:version], schema.migrations_paths)
- end
+ new.define(info, &block)
end
end
end
diff --git a/activerecord/test/cases/ar_schema_test.rb b/activerecord/test/cases/ar_schema_test.rb
index 588adc38e3..b2eac0349b 100644
--- a/activerecord/test/cases/ar_schema_test.rb
+++ b/activerecord/test/cases/ar_schema_test.rb
@@ -37,6 +37,13 @@ if ActiveRecord::Base.connection.supports_migrations?
end
end
end
+
+ def test_schema_subclass
+ Class.new(ActiveRecord::Schema).define(:version => 9) do
+ create_table :fruits
+ end
+ assert_nothing_raised { @connection.select_all "SELECT * FROM fruits" }
+ end
end
end