Method: Sequel::Postgres::InetDatabaseMethods.extended

Defined in:
lib/sequel/extensions/pg_inet.rb

.extended(db) ⇒ Object

Reset the conversion procs when extending the Database object, so it will pick up the inet/cidr converter. Also, extend the datasets with support for literalizing the IPAddr types.

[View source]

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/sequel/extensions/pg_inet.rb', line 40

def self.extended(db)
  db.instance_exec do
    extend_datasets(InetDatasetMethods)

    # :nocov:
    if !defined?(SEQUEL_PG_VERSION_INTEGER) || SEQUEL_PG_VERSION_INTEGER >= 11300
    # :nocov:
      # sequel_pg 1.13.0+ will use inet/cidr conversion procs, but doing so is
      # slower, so don't add the conversion procs if using sequel_pg 1.13.0+.
      meth = IPAddr.method(:new)
      add_conversion_proc(869, meth)
      add_conversion_proc(650, meth)
      if respond_to?(:register_array_type)
        register_array_type('inet', :oid=>1041, :scalar_oid=>869)
        register_array_type('cidr', :oid=>651, :scalar_oid=>650)
      end
    end

    if respond_to?(:register_array_type)
      register_array_type('macaddr', :oid=>1040, :scalar_oid=>829)
    end
    @schema_type_classes[:ipaddr] = IPAddr
  end
end