| Class | Sequel::MigrationReverser |
| In: |
lib/sequel/extensions/migration.rb
|
| Parent: | Sequel::BasicObject |
Handles the reversing of reversible migrations. Basically records supported methods calls, translates them to reversed calls, and returns them in reverse order.
Reverse the actions for the given block. Takes the block given and returns a new block that reverses the actions taken by the given block.
# File lib/sequel/extensions/migration.rb, line 131
131: def reverse(&block)
132: begin
133: instance_eval(&block)
134: rescue
135: just_raise = true
136: end
137: if just_raise
138: Proc.new{raise Sequel::Error, 'irreversible migration method used, you may need to write your own down method'}
139: else
140: actions = @actions.reverse
141: Proc.new do
142: actions.each do |a|
143: if a.last.is_a?(Proc)
144: pr = a.pop
145: send(*a, &pr)
146: else
147: send(*a)
148: end
149: end
150: end
151: end
152: end