Class: Sequel::MigrationReverser
- Inherits:
- BasicObject
- Defined in:
- lib/sequel/extensions/migration.rb
Overview
Handles the reversing of reversible migrations. Basically records supported methods calls, translates them to reversed calls, and returns them in reverse order.
Constant Summary
Constants inherited from BasicObject
Instance Method Summary collapse
-
#initialize ⇒ MigrationReverser
constructor
A new instance of MigrationReverser.
-
#reverse(&block) ⇒ Object
Reverse the actions for the given block.
Methods inherited from BasicObject
const_missing, remove_methods!
Constructor Details
#initialize ⇒ MigrationReverser
Returns a new instance of MigrationReverser.
125 126 127 |
# File 'lib/sequel/extensions/migration.rb', line 125 def initialize @actions = [] end |
Instance Method Details
#reverse(&block) ⇒ Object
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.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/sequel/extensions/migration.rb', line 132 def reverse(&block) begin instance_eval(&block) rescue just_raise = true end if just_raise Proc.new{raise Sequel::Error, 'irreversible migration method used, you may need to write your own down method'} else actions = @actions.reverse Proc.new do actions.each do |a| if a.last.is_a?(Proc) pr = a.pop send(*a, &pr) else send(*a) end end end end end |