Browse files

eliminating method_missing on TableDefinition

  • Loading branch information...
1 parent c57f5d5 commit 5793d5e0023257962ed9a8ef980062cddd30ce19 @tenderlove tenderlove committed Sep 29, 2010
View
20 activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -318,21 +318,13 @@ def initialize(base)
@base = base
end
- #Handles non supported datatypes - e.g. XML
- def method_missing(symbol, *args)
- if symbol.to_s == 'xml'
- xml_column_fallback(args)
- else
- super
- end
- end
+ def xml(*args)
+ raise NotImplementedError unless %w{
+ sqlite mysql mysql2
+ }.include? @base.adapter_name.downcase
- def xml_column_fallback(*args)
- case @base.adapter_name.downcase
- when 'sqlite', 'mysql'
- options = args.extract_options!
- column(args[0], :text, options)
- end
+ options = args.extract_options!
+ column(args[0], :text, options)
end
# Appends a primary key definition to the table definition.
View
14 activerecord/test/cases/migration_test.rb
@@ -1588,13 +1588,23 @@ def test_string_creates_string_column
end
end
- if current_adapter?(:PostgreSQLAdapter)
+ if current_adapter?(:PostgreSQLAdapter) || current_adapter?(:SQLiteAdapter) || current_adapter?(:MysqlAdapter) || current_adapter?(:Mysql2Adapter)
def test_xml_creates_xml_column
+ type = current_adapter?(:PostgreSQLAdapter) ? 'xml' : :text
+
with_new_table do |t|
- t.expects(:column).with(:data, 'xml', {})
+ t.expects(:column).with(:data, type, {})
t.xml :data
end
end
+ else
+ def test_xml_creates_xml_column
+ with_new_table do |t|
+ assert_raises(NotImplementedError) do
+ t.xml :data
+ end
+ end
+ end
end
protected

0 comments on commit 5793d5e

Please sign in to comment.