class Sequel::MigrationReverser

Handles the reversing of reversible migrations. Basically records supported methods calls, translates them to reversed calls, and returns them in reverse order.

:nocov:

Public Class Methods

new() click to toggle source
    # File lib/sequel/extensions/migration.rb
181 def initialize
182   @actions = []
183 end

Public Instance Methods

reverse(&block) click to toggle source

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
188 def reverse(&block)
189   begin
190     instance_exec(&block)
191   rescue
192     just_raise = true
193   end
194   if just_raise
195     Proc.new{raise Sequel::Error, "irreversible migration method used in #{block.source_location.first}, you may need to write your own down method"}
196   else
197     actions = @actions.reverse
198     Proc.new do
199       actions.each do |a|
200         pr = a.last.is_a?(Proc) ? a.pop : nil
201         # Allow calling private methods as the reversing methods are private
202         send(*a, &pr)
203       end
204     end
205   end
206 end