class ActiveGraph::Migrations::Base
Public Class Methods
new(migration_id, options = {})
click to toggle source
# File lib/active_graph/migrations/base.rb 9 def initialize(migration_id, options = {}) 10 @migration_id = migration_id 11 @silenced = options[:silenced] 12 end
Public Instance Methods
down()
click to toggle source
# File lib/active_graph/migrations/base.rb 24 def down 25 fail NotImplementedError 26 end
migrate(method)
click to toggle source
# File lib/active_graph/migrations/base.rb 14 def migrate(method) 15 Benchmark.realtime do 16 method == :up ? migrate_up : migrate_down 17 end 18 end
up()
click to toggle source
# File lib/active_graph/migrations/base.rb 20 def up 21 fail NotImplementedError 22 end
Private Instance Methods
handle_migration_error!(e)
click to toggle source
# File lib/active_graph/migrations/base.rb 59 def handle_migration_error!(e) 60 fail e unless e.message =~ /Cannot perform data updates in a transaction that has performed schema updates./ 61 fail MigrationError, 62 "#{e.message}. Please add `disable_transactions!` in your migration file." 63 end
log_queries() { || ... }
click to toggle source
# File lib/active_graph/migrations/base.rb 69 def log_queries 70 subscriber = ActiveGraph::Base.subscribe_to_query(&method(:output)) 71 yield 72 ensure 73 ActiveSupport::Notifications.unsubscribe(subscriber) if subscriber 74 end
migrate_down()
click to toggle source
# File lib/active_graph/migrations/base.rb 42 def migrate_down 43 schema = SchemaMigration.find_by!(migration_id: @migration_id) 44 schema.update!(incomplete: true) 45 begin 46 run_migration(:down) 47 rescue StandardError => e 48 schema.update!(incomplete: nil) if transactions? 49 handle_migration_error!(e) 50 else 51 schema.destroy 52 end 53 end
migrate_up()
click to toggle source
# File lib/active_graph/migrations/base.rb 30 def migrate_up 31 schema = SchemaMigration.create!(migration_id: @migration_id, incomplete: true) 32 begin 33 run_migration(:up) 34 rescue StandardError => e 35 schema.destroy if transactions? 36 handle_migration_error!(e) 37 else 38 schema.update!(incomplete: nil) 39 end 40 end
migration_transaction(&block)
click to toggle source
# File lib/active_graph/migrations/base.rb 65 def migration_transaction(&block) 66 transactions? ? ActiveGraph::Base.transaction(&block) : block.call 67 end
run_migration(direction)
click to toggle source
# File lib/active_graph/migrations/base.rb 55 def run_migration(direction) 56 migration_transaction { log_queries { public_send(direction) } } 57 end