module ActiveRecord::PGEnum

Constants

KNOWN_VERSIONS
VERSION

Attributes

enabled_version[R]

Public Class Methods

detected_version() click to toggle source
# File lib/active_record/pg_enum.rb, line 28
def detected_version
  approximate_version Gem.loaded_specs["activerecord"].version
end
install(version) click to toggle source
# File lib/active_record/pg_enum.rb, line 11
def install(version)
  @enabled_version = approximate_version(version)

  # Don't immediately fail if we don't yet support the current version.
  # There's at least a chance it could work.
  if !KNOWN_VERSIONS.include?(enabled_version) && enabled_version > KNOWN_VERSIONS.last
    @enabled_version = KNOWN_VERSIONS.last
    warn "[PGEnum] Current ActiveRecord version unsupported! Falling back to: #{enabled_version}"
  end

  initialize!
end
register(patch, &block) click to toggle source
# File lib/active_record/pg_enum.rb, line 24
def register(patch, &block)
  monkeypatches[patch] = block
end

Private Class Methods

approximate_version(version) click to toggle source
# File lib/active_record/pg_enum.rb, line 47
def approximate_version(version)
  segments = version.respond_to?(:canonical_segments) ? version.canonical_segments.dup : version.segments

  segments.pop     while segments.any? { |s| String === s }
  segments.pop     while segments.size > 2
  segments.push(0) while segments.size < 2

  Gem::Version.new segments.join(".")
end
initialize!() click to toggle source
# File lib/active_record/pg_enum.rb, line 38
def initialize!
  require "active_record/pg_enum/command_recorder"
  require "active_record/pg_enum/postgresql_adapter"
  require "active_record/pg_enum/schema_statements"

  Dir[File.join(__dir__, "pg_enum", enabled_version.to_s, "*.rb")].each { |file| require file }
  monkeypatches.keys.each { |patch| monkeypatches.delete(patch).call }
end
monkeypatches() click to toggle source
# File lib/active_record/pg_enum.rb, line 34
def monkeypatches
  @patches ||= {}
end