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
168 def initialize
169   @actions = []
170 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
175 def reverse(&block)
176   begin
177     instance_exec(&block)
178   rescue
179     just_raise = true
180   end
181   if just_raise
182     Proc.new{raise Sequel::Error, "irreversible migration method used in #{block.source_location.first}, you may need to write your own down method"}
183   else
184     actions = @actions.reverse
185     Proc.new do
186       actions.each do |a|
187         pr = a.last.is_a?(Proc) ? a.pop : nil
188         # Allow calling private methods as the reversing methods are private
189         send(*a, &pr)
190       end
191     end
192   end
193 end

Private Instance Methods

add_column(*args) click to toggle source
    # File lib/sequel/extensions/migration.rb
197 def add_column(*args)
198   @actions << [:drop_column, args[0], args[1]]
199 end
add_index(*args) click to toggle source
    # File lib/sequel/extensions/migration.rb
201 def add_index(*args)
202   @actions << [:drop_index, *args]
203 end
alter_table(table, &block) click to toggle source
    # File lib/sequel/extensions/migration.rb
205 def alter_table(table, &block)
206   @actions << [:alter_table, table, MigrationAlterTableReverser.new.reverse(&block)]
207 end
create_enum(name, _) click to toggle source
    # File lib/sequel/extensions/pg_enum.rb
189 def create_enum(name, _)
190   @actions << [:drop_enum, name]
191 end
create_join_table(*args) click to toggle source
    # File lib/sequel/extensions/migration.rb
209 def create_join_table(*args)
210   @actions << [:drop_join_table, *args]
211 end
create_table(name, opts=OPTS) click to toggle source
    # File lib/sequel/extensions/migration.rb
213 def create_table(name, opts=OPTS)
214   @actions << [:drop_table, name, opts]
215 end
create_view(name, _, opts=OPTS) click to toggle source
    # File lib/sequel/extensions/migration.rb
217 def create_view(name, _, opts=OPTS)
218   @actions << [:drop_view, name, opts]
219 end
rename_column(table, name, new_name) click to toggle source
    # File lib/sequel/extensions/migration.rb
221 def rename_column(table, name, new_name)
222   @actions << [:rename_column, table, new_name, name]
223 end
rename_enum(old_name, new_name) click to toggle source
    # File lib/sequel/extensions/pg_enum.rb
193 def rename_enum(old_name, new_name)
194   @actions << [:rename_enum, new_name, old_name]
195 end
rename_table(table, new_name) click to toggle source
    # File lib/sequel/extensions/migration.rb
225 def rename_table(table, new_name)
226   @actions << [:rename_table, new_name, table]
227 end