module DBNazi

Constants

ArgumentError
IndexUniquenessRequired
NullabilityRequired
VERSION
VarcharLimitRequired

Attributes

enabled[RW]
from_version[RW]
require_index_uniqueness[RW]
require_nullability[RW]
require_varchar_limits[RW]

Public Class Methods

check_column(type, options) click to toggle source
# File lib/db_nazi.rb, line 61
def check_column(type, options)
  if DBNazi.enabled?(:require_nullability) && type != :primary_key
    options.key?(:null) or
      raise NullabilityRequired, "[db_nazi] :null parameter required"
  end
  if DBNazi.enabled?(:require_varchar_limits)
    # AR calls #to_sym on type, so do the same here.
    type.to_sym == :string && !options.key?(:limit) and
      raise VarcharLimitRequired, "[db_nazi] string column requires :limit parameter"
  end
end
check_index(options) click to toggle source
# File lib/db_nazi.rb, line 73
def check_index(options)
  if DBNazi.enabled?(:require_index_uniqueness)
    options.key?(:unique) or
      raise IndexUniquenessRequired, "[db_nazi] :unique parameter required"
  end
end
disable() { || ... } click to toggle source
# File lib/db_nazi.rb, line 36
def disable
  original_enabled = @enabled
  @enabled = false
  begin
    yield
  ensure
    @enabled = original_enabled
  end
end
enable() { || ... } click to toggle source
# File lib/db_nazi.rb, line 26
def enable
  original_enabled = @enabled
  @enabled = true
  begin
    yield
  ensure
    @enabled = original_enabled
  end
end
enabled?(setting) click to toggle source
# File lib/db_nazi.rb, line 22
def enabled?(setting)
  @enabled && send(setting)
end
enabled_for_migration?(migration, version) click to toggle source
# File lib/db_nazi.rb, line 46
def enabled_for_migration?(migration, version)
  return false if !@enabled
  return false if migration.nazi_disabled?
  return false if DBNazi.from_version && DBNazi.from_version > version
  true
end
reset() click to toggle source
# File lib/db_nazi.rb, line 53
def reset
  self.enabled = true
  self.from_version = nil
  self.require_nullability      = true
  self.require_varchar_limits   = true
  self.require_index_uniqueness = true
end