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.

### Methods

new reverse

### Public Class methods

new()

[Source]

         # File lib/sequel/extensions/migration.rb, line 125
    125:     def initialize
    126:       @actions = []
    127:     end

### Public Instance methods

reverse(&block)

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.

[Source]

         # File lib/sequel/extensions/migration.rb, line 132
    132:     def reverse(&block)
    133:       begin
    134:         instance_eval(&block)
    135:       rescue
    136:         just_raise = true
    137:       end
    138:       if just_raise
    139:         Proc.new{raise Sequel::Error, 'irreversible migration method used, you may need to write your own down method'}
    140:       else
    141:         actions = @actions.reverse
    142:         Proc.new do
    143:           actions.each do |a|
    144:             if a.last.is_a?(Proc)
    145:               pr = a.pop
    146:               send(*a, &pr)
    147:             else
    148:               send(*a)
    149:             end
    150:           end
    151:         end
    152:       end
    153:     end

[Validate]