aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/activerecord.gemspec1
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb13
-rw-r--r--activerecord/test/cases/adapters/postgresql/datatype_test.rb7
3 files changed, 11 insertions, 10 deletions
diff --git a/activerecord/activerecord.gemspec b/activerecord/activerecord.gemspec
index b91940569e..e8e5f4adfe 100644
--- a/activerecord/activerecord.gemspec
+++ b/activerecord/activerecord.gemspec
@@ -24,5 +24,4 @@ Gem::Specification.new do |s|
s.add_dependency('arel', '~> 3.0.2')
s.add_dependency('active_record_deprecated_finders', '0.0.1')
- s.add_dependency('netaddr', '~> 1.5.0')
end
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index 45149e69a6..6714970103 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -3,12 +3,13 @@ require 'active_support/core_ext/object/blank'
require 'active_record/connection_adapters/statement_pool'
require 'active_record/connection_adapters/postgresql/oid'
require 'arel/visitors/bind_visitor'
-require 'netaddr'
# Make sure we're using pg high enough for PGResult#values
gem 'pg', '~> 0.11'
require 'pg'
+require 'ipaddr'
+
module ActiveRecord
module ConnectionHandling
# Establishes a connection to the database that's used by all Active Record objects
@@ -84,7 +85,7 @@ module ActiveRecord
if string.nil?
nil
elsif String === string
- NetAddr::CIDR.create(string)
+ IPAddr.new(string)
else
string
end
@@ -92,8 +93,8 @@ module ActiveRecord
end
def cidr_to_string(object)
- if NetAddr::CIDR === object
- object.to_s
+ if IPAddr === object
+ "#{object.to_s}/#{object.instance_variable_get(:@mask_addr).to_s(2).count('1')}"
else
object
end
@@ -549,7 +550,7 @@ module ActiveRecord
when 'hstore' then super(PostgreSQLColumn.hstore_to_string(value), column)
else super
end
- when NetAddr::CIDR, NetAddr::CIDRv4, NetAddr::CIDRv6
+ when IPAddr
case column.sql_type
when 'inet', 'cidr' then super(PostgreSQLColumn.cidr_to_string(value), column)
else super
@@ -593,7 +594,7 @@ module ActiveRecord
when Hash
return super unless 'hstore' == column.sql_type
PostgreSQLColumn.hstore_to_string(value)
- when NetAddr::CIDR, NetAddr::CIDRv4, NetAddr::CIDRv6
+ when IPAddr
return super unless ['inet','cidr'].includes? column.sql_type
PostgreSQLColumn.cidr_to_string(value)
else
diff --git a/activerecord/test/cases/adapters/postgresql/datatype_test.rb b/activerecord/test/cases/adapters/postgresql/datatype_test.rb
index cf58c3089f..34660577da 100644
--- a/activerecord/test/cases/adapters/postgresql/datatype_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/datatype_test.rb
@@ -134,9 +134,10 @@ class PostgresqlDataTypeTest < ActiveRecord::TestCase
assert_equal '-1 years -2 days', @first_time.time_interval
end
- def test_network_address_values
- cidr_address = NetAddr::CIDR.create '192.168.0.0/24'
- inet_address = NetAddr::CIDR.create '172.16.1.254'
+ def test_network_address_values_ipaddr
+ cidr_address = IPAddr.new '192.168.0.0/24'
+ inet_address = IPAddr.new '172.16.1.254'
+
assert_equal cidr_address, @first_network_address.cidr_address
assert_equal inet_address, @first_network_address.inet_address
assert_equal '01:23:45:67:89:0a', @first_network_address.mac_address