module ActiveRecord::PGCollation
Constants
- KNOWN_VERSIONS
- VERSION
Attributes
enabled_version[R]
Public Class Methods
detected_version()
click to toggle source
# File lib/active_record/pg_collation.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_collation.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("[PGCollation] Current ActiveRecord version unsupported! Falling back to: #{enabled_version}") end initialize! end
register(patch, &block)
click to toggle source
# File lib/active_record/pg_collation.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_collation.rb, line 34 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_collation.rb, line 48 def initialize! require "active_record/pg_collation/command_recorder" require "active_record/pg_collation/postgresql_adapter" require "active_record/pg_collation/schema_statements" Dir[File.join(__dir__, "pg_collation", 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_collation.rb, line 44 def monkeypatches @patches ||= {} end