mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Merge pull request #1941 from vijaydev/command-recorder-fix
Reversing the changes related to CommandRecorder
This commit is contained in:
@@ -48,7 +48,7 @@ module ActiveRecord
|
||||
super || delegate.respond_to?(*args)
|
||||
end
|
||||
|
||||
[:create_table, :rename_table, :add_column, :remove_column, :rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps, :change_column, :change_column_default].each do |method|
|
||||
[:create_table, :change_table, :rename_table, :add_column, :remove_column, :rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps, :change_column, :change_column_default].each do |method|
|
||||
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
||||
def #{method}(*args) # def create_table(*args)
|
||||
record(:"#{method}", args) # record(:create_table, args)
|
||||
@@ -93,15 +93,11 @@ module ActiveRecord
|
||||
[:remove_timestamps, args]
|
||||
end
|
||||
|
||||
# Record all the methods called in the +change+ method of a migration.
|
||||
# This will ensure that IrreversibleMigration is raised when the corresponding
|
||||
# invert_method does not exist while the migration is rolled back.
|
||||
# Forwards any missing method call to the \target.
|
||||
def method_missing(method, *args, &block)
|
||||
if delegate.respond_to?(method)
|
||||
delegate.send(method, *args, &block)
|
||||
else
|
||||
record(method, args)
|
||||
end
|
||||
@delegate.send(method, *args, &block)
|
||||
rescue NoMethodError => e
|
||||
raise e, e.message.sub(/ for #<.*$/, " via proxy for #{@delegate}")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -14,11 +14,9 @@ module ActiveRecord
|
||||
assert recorder.respond_to?(:america)
|
||||
end
|
||||
|
||||
def test_non_existing_method_records_and_raises_on_inversion
|
||||
@recorder.send(:non_existing_method, :horses)
|
||||
assert_equal 1, @recorder.commands.length
|
||||
assert_raises(ActiveRecord::IrreversibleMigration) do
|
||||
@recorder.inverse
|
||||
def test_send_calls_super
|
||||
assert_raises(NoMethodError) do
|
||||
@recorder.send(:non_existing_method, :horses)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user