class MigrationButton::Initializer

Public Instance Methods

add_hook(&hook) click to toggle source
# File lib/migration_button/initializer.rb, line 20
def add_hook(&hook)
  hooks << hook
end
on!() click to toggle source
# File lib/migration_button/initializer.rb, line 5
def on!
  if !Rails.env.development? && ENV['MIGRATION_BUTTON'].nil?
    add_warn_hook
  else
    @on = true
    add_insert_middleware_hook
  end
end
on?() click to toggle source
# File lib/migration_button/initializer.rb, line 24
def on?
  !!@on
end
run(object) click to toggle source
# File lib/migration_button/initializer.rb, line 14
def run(object)
  hooks.each do |hook|
    object.instance_exec(&hook)
  end
end

Protected Instance Methods

add_insert_middleware_hook() click to toggle source
# File lib/migration_button/initializer.rb, line 42
def add_insert_middleware_hook
  add_hook do
    if defined?(::BetterErrors::Middleware) &&
       defined?(::BetterErrors::Railtie) &&
       ::BetterErrors::Railtie.use_better_errors?

      Rails.application.middleware.insert_after ::BetterErrors::Middleware, MigrationButton::Middleware
    else
      config.app_middleware.insert_after ActionDispatch::Callbacks, MigrationButton::Middleware
    end
  end
end
add_warn_hook() click to toggle source
# File lib/migration_button/initializer.rb, line 30
    def add_warn_hook
      add_hook do
        Rails.logger.warn(<<-ERR)
MigrationButton engine is considered to be dangeroues in other environments than 'development'.
To surpress this warning message remove line:
`config.active_record.migration_error = :migration_button`
from 'config/environments/#{Rails.env}.rb' file.
Or force using it by settting environment variable 'MIGRATION_BUTTON'.
ERR
      end
    end
hooks() click to toggle source
# File lib/migration_button/initializer.rb, line 55
def hooks
  @hooks ||= Set.new
end