geocoder 1.4.8 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +31 -0
  3. data/LICENSE +1 -1
  4. data/README.md +355 -950
  5. data/examples/autoexpire_cache_redis.rb +2 -0
  6. data/lib/generators/geocoder/config/templates/initializer.rb +1 -1
  7. data/lib/geocoder/calculations.rb +1 -1
  8. data/lib/geocoder/cli.rb +2 -2
  9. data/lib/geocoder/configuration.rb +1 -1
  10. data/lib/geocoder/exceptions.rb +1 -1
  11. data/lib/geocoder/ip_address.rb +14 -1
  12. data/lib/geocoder/lookup.rb +7 -5
  13. data/lib/geocoder/lookups/amap.rb +7 -3
  14. data/lib/geocoder/lookups/baidu.rb +14 -10
  15. data/lib/geocoder/lookups/baidu_ip.rb +7 -36
  16. data/lib/geocoder/lookups/ban_data_gouv_fr.rb +17 -4
  17. data/lib/geocoder/lookups/base.rb +27 -4
  18. data/lib/geocoder/lookups/bing.rb +10 -13
  19. data/lib/geocoder/lookups/db_ip_com.rb +9 -6
  20. data/lib/geocoder/lookups/dstk.rb +4 -2
  21. data/lib/geocoder/lookups/esri.rb +39 -29
  22. data/lib/geocoder/lookups/freegeoip.rb +11 -7
  23. data/lib/geocoder/lookups/geocoder_ca.rb +4 -4
  24. data/lib/geocoder/lookups/geocodio.rb +5 -5
  25. data/lib/geocoder/lookups/geoportail_lu.rb +7 -7
  26. data/lib/geocoder/lookups/google.rb +8 -8
  27. data/lib/geocoder/lookups/google_places_details.rb +4 -4
  28. data/lib/geocoder/lookups/google_places_search.rb +4 -4
  29. data/lib/geocoder/lookups/google_premier.rb +10 -0
  30. data/lib/geocoder/lookups/here.rb +29 -23
  31. data/lib/geocoder/lookups/ip2location.rb +67 -0
  32. data/lib/geocoder/lookups/ipapi_com.rb +9 -13
  33. data/lib/geocoder/lookups/ipdata_co.rb +9 -4
  34. data/lib/geocoder/lookups/ipgeolocation.rb +63 -0
  35. data/lib/geocoder/lookups/ipinfo_io.rb +11 -29
  36. data/lib/geocoder/lookups/ipregistry.rb +68 -0
  37. data/lib/geocoder/lookups/ipstack.rb +11 -12
  38. data/lib/geocoder/lookups/latlon.rb +4 -4
  39. data/lib/geocoder/lookups/location_iq.rb +10 -4
  40. data/lib/geocoder/lookups/mapbox.rb +7 -6
  41. data/lib/geocoder/lookups/mapquest.rb +4 -5
  42. data/lib/geocoder/lookups/maxmind.rb +6 -6
  43. data/lib/geocoder/lookups/maxmind_geoip2.rb +8 -7
  44. data/lib/geocoder/lookups/nominatim.rb +4 -4
  45. data/lib/geocoder/lookups/opencagedata.rb +6 -5
  46. data/lib/geocoder/lookups/osmnames.rb +57 -0
  47. data/lib/geocoder/lookups/pelias.rb +8 -9
  48. data/lib/geocoder/lookups/pickpoint.rb +9 -3
  49. data/lib/geocoder/lookups/pointpin.rb +10 -9
  50. data/lib/geocoder/lookups/postcode_anywhere_uk.rb +4 -5
  51. data/lib/geocoder/lookups/postcodes_io.rb +31 -0
  52. data/lib/geocoder/lookups/smarty_streets.rb +20 -10
  53. data/lib/geocoder/lookups/telize.rb +23 -3
  54. data/lib/geocoder/lookups/tencent.rb +59 -0
  55. data/lib/geocoder/lookups/yandex.rb +6 -6
  56. data/lib/geocoder/query.rb +14 -0
  57. data/lib/geocoder/railtie.rb +1 -1
  58. data/lib/geocoder/results/baidu.rb +10 -14
  59. data/lib/geocoder/results/ban_data_gouv_fr.rb +1 -1
  60. data/lib/geocoder/results/base.rb +13 -1
  61. data/lib/geocoder/results/bing.rb +1 -1
  62. data/lib/geocoder/results/db_ip_com.rb +0 -5
  63. data/lib/geocoder/results/freegeoip.rb +0 -5
  64. data/lib/geocoder/results/geocoder_ca.rb +3 -3
  65. data/lib/geocoder/results/geoip2.rb +4 -4
  66. data/lib/geocoder/results/geoportail_lu.rb +5 -3
  67. data/lib/geocoder/results/here.rb +4 -1
  68. data/lib/geocoder/results/ip2location.rb +22 -0
  69. data/lib/geocoder/results/ipdata_co.rb +0 -5
  70. data/lib/geocoder/results/ipgeolocation.rb +59 -0
  71. data/lib/geocoder/results/ipregistry.rb +308 -0
  72. data/lib/geocoder/results/maxmind.rb +0 -5
  73. data/lib/geocoder/results/maxmind_local.rb +0 -5
  74. data/lib/geocoder/results/osmnames.rb +56 -0
  75. data/lib/geocoder/results/postcodes_io.rb +40 -0
  76. data/lib/geocoder/results/smarty_streets.rb +48 -18
  77. data/lib/geocoder/results/telize.rb +0 -5
  78. data/lib/geocoder/results/tencent.rb +72 -0
  79. data/lib/geocoder/results/test.rb +1 -1
  80. data/lib/geocoder/stores/active_record.rb +1 -3
  81. data/lib/geocoder/version.rb +1 -1
  82. data/lib/hash_recursive_merge.rb +1 -2
  83. data/lib/maxmind_database.rb +3 -3
  84. metadata +17 -18
  85. data/lib/geocoder/lookups/geocoder_us.rb +0 -43
  86. data/lib/geocoder/lookups/mapzen.rb +0 -15
  87. data/lib/geocoder/lookups/okf.rb +0 -44
  88. data/lib/geocoder/lookups/ovi.rb +0 -62
  89. data/lib/geocoder/results/geocoder_us.rb +0 -39
  90. data/lib/geocoder/results/mapzen.rb +0 -5
  91. data/lib/geocoder/results/okf.rb +0 -106
  92. data/lib/geocoder/results/ovi.rb +0 -71
@@ -87,11 +87,6 @@ module Geocoder::Result
87
87
  [data_hash[:latitude].to_f, data_hash[:longitude].to_f]
88
88
  end
89
89
 
90
- def address(format = :full)
91
- s = state_code.to_s == "" ? "" : ", #{state_code}"
92
- "#{city}#{s} #{postal_code}, #{country_code}".sub(/^[ ,]*/, "")
93
- end
94
-
95
90
  def city
96
91
  data_hash[:city_name]
97
92
  end
@@ -3,11 +3,6 @@ require 'geocoder/results/base'
3
3
  module Geocoder::Result
4
4
  class MaxmindLocal < Base
5
5
 
6
- def address(format = :full)
7
- s = state.to_s == "" ? "" : ", #{state}"
8
- "#{city}#{s} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
9
- end
10
-
11
6
  def coordinates
12
7
  [@data[:latitude], @data[:longitude]]
13
8
  end
@@ -0,0 +1,56 @@
1
+ require 'geocoder/results/base'
2
+
3
+ module Geocoder::Result
4
+ class Osmnames < Base
5
+ def address
6
+ @data['display_name']
7
+ end
8
+
9
+ def coordinates
10
+ [@data['lat'].to_f, @data['lon'].to_f]
11
+ end
12
+
13
+ def viewport
14
+ west, south, east, north = @data['boundingbox'].map(&:to_f)
15
+ [south, west, north, east]
16
+ end
17
+
18
+ def state
19
+ @data['state']
20
+ end
21
+ alias_method :state_code, :state
22
+
23
+ def place_class
24
+ @data['class']
25
+ end
26
+
27
+ def place_type
28
+ @data['type']
29
+ end
30
+
31
+ def postal_code
32
+ ''
33
+ end
34
+
35
+ def country_code
36
+ @data['country_code']
37
+ end
38
+
39
+ def country
40
+ @data['country']
41
+ end
42
+
43
+ def self.response_attributes
44
+ %w[house_number street city name osm_id osm_type boundingbox place_rank
45
+ importance county rank name_suffix]
46
+ end
47
+
48
+ response_attributes.each do |a|
49
+ unless method_defined?(a)
50
+ define_method a do
51
+ @data[a]
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ require 'geocoder/results/base'
2
+
3
+ module Geocoder::Result
4
+ class PostcodesIo < Base
5
+
6
+ def coordinates
7
+ [@data['latitude'].to_f, @data['longitude'].to_f]
8
+ end
9
+
10
+ def quality
11
+ @data['quality']
12
+ end
13
+
14
+ def postal_code
15
+ @data['postcode']
16
+ end
17
+ alias address postal_code
18
+
19
+ def city
20
+ @data['admin_ward']
21
+ end
22
+
23
+ def county
24
+ @data['admin_county']
25
+ end
26
+ alias state county
27
+
28
+ def state_code
29
+ @data['codes']['admin_county']
30
+ end
31
+
32
+ def country
33
+ 'United Kingdom'
34
+ end
35
+
36
+ def country_code
37
+ 'UK'
38
+ end
39
+ end
40
+ end
@@ -15,51 +15,77 @@ module Geocoder::Result
15
15
  end
16
16
 
17
17
  def address
18
- [
19
- delivery_line_1,
20
- delivery_line_2,
21
- last_line
22
- ].select{ |i| i.to_s != "" }.join(" ")
18
+ parts =
19
+ if international_endpoint?
20
+ (1..12).map { |i| @data["address#{i}"] }
21
+ else
22
+ [
23
+ delivery_line_1,
24
+ delivery_line_2,
25
+ last_line
26
+ ]
27
+ end
28
+ parts.select{ |i| i.to_s != "" }.join(" ")
23
29
  end
24
30
 
25
31
  def state
26
- zipcode_endpoint? ?
27
- city_states.first['state'] :
32
+ if international_endpoint?
33
+ components['administrative_area']
34
+ elsif zipcode_endpoint?
35
+ city_states.first['state']
36
+ else
28
37
  components['state_abbreviation']
38
+ end
29
39
  end
30
40
 
31
41
  def state_code
32
- zipcode_endpoint? ?
33
- city_states.first['state_abbreviation'] :
42
+ if international_endpoint?
43
+ components['administrative_area']
44
+ elsif zipcode_endpoint?
45
+ city_states.first['state_abbreviation']
46
+ else
34
47
  components['state_abbreviation']
48
+ end
35
49
  end
36
50
 
37
51
  def country
38
- # SmartyStreets returns results for USA only
39
- "United States"
52
+ international_endpoint? ?
53
+ components['country_iso_3'] :
54
+ "United States"
40
55
  end
41
56
 
42
57
  def country_code
43
- # SmartyStreets returns results for USA only
44
- "US"
58
+ international_endpoint? ?
59
+ components['country_iso_3'] :
60
+ "US"
45
61
  end
46
62
 
47
63
  ## Extra methods not in base.rb ------------------------
48
64
 
49
65
  def street
50
- components['street_name']
66
+ international_endpoint? ?
67
+ components['thoroughfare_name'] :
68
+ components['street_name']
51
69
  end
52
70
 
53
71
  def city
54
- zipcode_endpoint? ?
55
- city_states.first['city'] :
72
+ if international_endpoint?
73
+ components['locality']
74
+ elsif zipcode_endpoint?
75
+ city_states.first['city']
76
+ else
56
77
  components['city_name']
78
+ end
57
79
  end
58
80
 
59
81
  def zipcode
60
- zipcode_endpoint? ?
61
- zipcodes.first['zipcode'] :
82
+ if international_endpoint?
83
+ components['postal_code']
84
+ elsif zipcode_endpoint?
85
+ zipcodes.first['zipcode']
86
+ else
62
87
  components['zipcode']
88
+ end
63
89
  end
64
90
  alias_method :postal_code, :zipcode
65
91
 
@@ -78,6 +104,10 @@ module Geocoder::Result
78
104
  zipcodes.any?
79
105
  end
80
106
 
107
+ def international_endpoint?
108
+ !@data['address1'].nil?
109
+ end
110
+
81
111
  [
82
112
  :delivery_line_1,
83
113
  :delivery_line_2,
@@ -3,11 +3,6 @@ require 'geocoder/results/base'
3
3
  module Geocoder::Result
4
4
  class Telize < Base
5
5
 
6
- def address(format = :full)
7
- s = state_code.to_s == "" ? "" : ", #{state_code}"
8
- "#{city}#{s} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
9
- end
10
-
11
6
  def city
12
7
  @data['city']
13
8
  end
@@ -0,0 +1,72 @@
1
+ require 'geocoder/results/base'
2
+
3
+ module Geocoder::Result
4
+ class Tencent < Base
5
+
6
+ def coordinates
7
+ ['lat', 'lng'].map{ |i| @data['location'][i] }
8
+ end
9
+
10
+ def address
11
+ "#{province}#{city}#{district}#{street}#{street_number}"
12
+
13
+ #@data['title'] or @data['address']
14
+ end
15
+
16
+ # NOTE: The Tencent reverse geocoding API has the field named
17
+ # 'address_component' compared to 'address_components' in the
18
+ # regular geocoding API.
19
+ def province
20
+ @data['address_components'] and (@data['address_components']['province']) or
21
+ (@data['address_component'] and @data['address_component']['province']) or
22
+ ""
23
+ end
24
+
25
+ alias_method :state, :province
26
+
27
+ def city
28
+ @data['address_components'] and (@data['address_components']['city']) or
29
+ (@data['address_component'] and @data['address_component']['city']) or
30
+ ""
31
+ end
32
+
33
+ def district
34
+ @data['address_components'] and (@data['address_components']['district']) or
35
+ (@data['address_component'] and @data['address_component']['district']) or
36
+ ""
37
+ end
38
+
39
+ def street
40
+ @data['address_components'] and (@data['address_components']['street']) or
41
+ (@data['address_component'] and @data['address_component']['street']) or
42
+ ""
43
+ end
44
+
45
+ def street_number
46
+ @data['address_components'] and (@data['address_components']['street_number']) or
47
+ (@data['address_component'] and @data['address_component']['street_number']) or
48
+ ""
49
+ end
50
+
51
+ def address_components
52
+ @data['address_components'] or @data['address_component']
53
+ end
54
+
55
+ def state_code
56
+ ""
57
+ end
58
+
59
+ def postal_code
60
+ ""
61
+ end
62
+
63
+ def country
64
+ "China"
65
+ end
66
+
67
+ def country_code
68
+ "CN"
69
+ end
70
+
71
+ end
72
+ end
@@ -15,7 +15,7 @@ module Geocoder
15
15
  end
16
16
  end
17
17
 
18
- %w[latitude longitude neighborhood city state state_code sub_state
18
+ %w[coordinates neighborhood city state state_code sub_state
19
19
  sub_state_code province province_code postal_code country
20
20
  country_code address street_address street_number route geometry].each do |attr|
21
21
  add_result_attribute(attr)
@@ -60,7 +60,7 @@ module Geocoder::Store
60
60
  # corner followed by the northeast corner of the box
61
61
  # (<tt>[[sw_lat, sw_lon], [ne_lat, ne_lon]]</tt>).
62
62
  #
63
- scope :within_bounding_box, lambda{ |bounds|
63
+ scope :within_bounding_box, lambda{ |*bounds|
64
64
  sw_lat, sw_lng, ne_lat, ne_lng = bounds.flatten if bounds
65
65
  if sw_lat && sw_lng && ne_lat && ne_lng
66
66
  where(Geocoder::Sql.within_bounding_box(
@@ -166,8 +166,6 @@ module Geocoder::Store
166
166
  }
167
167
  end
168
168
 
169
- private # ----------------------------------------------------------------
170
-
171
169
  ##
172
170
  # SQL for calculating distance based on the current database's
173
171
  # capabilities (trig functions?).
@@ -1,3 +1,3 @@
1
1
  module Geocoder
2
- VERSION = "1.4.8"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -60,9 +60,8 @@ module HashRecursiveMerge
60
60
  # h1.merge(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
61
61
  #
62
62
  def rmerge(other_hash)
63
- r = {}
64
63
  merge(other_hash) do |key, oldval, newval|
65
- r[key] = oldval.class == self.class ? oldval.rmerge(newval) : newval
64
+ oldval.class == self.class ? oldval.rmerge(newval) : newval
66
65
  end
67
66
  end
68
67
 
@@ -96,9 +96,9 @@ module Geocoder
96
96
 
97
97
  def archive_url_path(package)
98
98
  {
99
- geolite_country_csv: "GeoIPCountryCSV.zip",
100
- geolite_city_csv: "GeoLiteCity_CSV/GeoLiteCity-latest.zip",
101
- geolite_asn_csv: "asnum/GeoIPASNum2.zip"
99
+ geolite_country_csv: "GeoLite2-Country-CSV.zip",
100
+ geolite_city_csv: "GeoLite2-City-CSV.zip",
101
+ geolite_asn_csv: "GeoLite2-ASN-CSV.zip"
102
102
  }[package]
103
103
  end
104
104
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geocoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.8
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Reisner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-21 00:00:00.000000000 Z
11
+ date: 2020-01-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Provides object geocoding (by street or IP address), reverse geocoding
14
14
  (coordinates to street address), distance queries for ActiveRecord and Mongoid,
@@ -59,7 +59,6 @@ files:
59
59
  - lib/geocoder/lookups/esri.rb
60
60
  - lib/geocoder/lookups/freegeoip.rb
61
61
  - lib/geocoder/lookups/geocoder_ca.rb
62
- - lib/geocoder/lookups/geocoder_us.rb
63
62
  - lib/geocoder/lookups/geocodio.rb
64
63
  - lib/geocoder/lookups/geoip2.rb
65
64
  - lib/geocoder/lookups/geoportail_lu.rb
@@ -68,28 +67,31 @@ files:
68
67
  - lib/geocoder/lookups/google_places_search.rb
69
68
  - lib/geocoder/lookups/google_premier.rb
70
69
  - lib/geocoder/lookups/here.rb
70
+ - lib/geocoder/lookups/ip2location.rb
71
71
  - lib/geocoder/lookups/ipapi_com.rb
72
72
  - lib/geocoder/lookups/ipdata_co.rb
73
+ - lib/geocoder/lookups/ipgeolocation.rb
73
74
  - lib/geocoder/lookups/ipinfo_io.rb
75
+ - lib/geocoder/lookups/ipregistry.rb
74
76
  - lib/geocoder/lookups/ipstack.rb
75
77
  - lib/geocoder/lookups/latlon.rb
76
78
  - lib/geocoder/lookups/location_iq.rb
77
79
  - lib/geocoder/lookups/mapbox.rb
78
80
  - lib/geocoder/lookups/mapquest.rb
79
- - lib/geocoder/lookups/mapzen.rb
80
81
  - lib/geocoder/lookups/maxmind.rb
81
82
  - lib/geocoder/lookups/maxmind_geoip2.rb
82
83
  - lib/geocoder/lookups/maxmind_local.rb
83
84
  - lib/geocoder/lookups/nominatim.rb
84
- - lib/geocoder/lookups/okf.rb
85
85
  - lib/geocoder/lookups/opencagedata.rb
86
- - lib/geocoder/lookups/ovi.rb
86
+ - lib/geocoder/lookups/osmnames.rb
87
87
  - lib/geocoder/lookups/pelias.rb
88
88
  - lib/geocoder/lookups/pickpoint.rb
89
89
  - lib/geocoder/lookups/pointpin.rb
90
90
  - lib/geocoder/lookups/postcode_anywhere_uk.rb
91
+ - lib/geocoder/lookups/postcodes_io.rb
91
92
  - lib/geocoder/lookups/smarty_streets.rb
92
93
  - lib/geocoder/lookups/telize.rb
94
+ - lib/geocoder/lookups/tencent.rb
93
95
  - lib/geocoder/lookups/test.rb
94
96
  - lib/geocoder/lookups/yandex.rb
95
97
  - lib/geocoder/models/active_record.rb
@@ -111,7 +113,6 @@ files:
111
113
  - lib/geocoder/results/esri.rb
112
114
  - lib/geocoder/results/freegeoip.rb
113
115
  - lib/geocoder/results/geocoder_ca.rb
114
- - lib/geocoder/results/geocoder_us.rb
115
116
  - lib/geocoder/results/geocodio.rb
116
117
  - lib/geocoder/results/geoip2.rb
117
118
  - lib/geocoder/results/geoportail_lu.rb
@@ -120,28 +121,31 @@ files:
120
121
  - lib/geocoder/results/google_places_search.rb
121
122
  - lib/geocoder/results/google_premier.rb
122
123
  - lib/geocoder/results/here.rb
124
+ - lib/geocoder/results/ip2location.rb
123
125
  - lib/geocoder/results/ipapi_com.rb
124
126
  - lib/geocoder/results/ipdata_co.rb
127
+ - lib/geocoder/results/ipgeolocation.rb
125
128
  - lib/geocoder/results/ipinfo_io.rb
129
+ - lib/geocoder/results/ipregistry.rb
126
130
  - lib/geocoder/results/ipstack.rb
127
131
  - lib/geocoder/results/latlon.rb
128
132
  - lib/geocoder/results/location_iq.rb
129
133
  - lib/geocoder/results/mapbox.rb
130
134
  - lib/geocoder/results/mapquest.rb
131
- - lib/geocoder/results/mapzen.rb
132
135
  - lib/geocoder/results/maxmind.rb
133
136
  - lib/geocoder/results/maxmind_geoip2.rb
134
137
  - lib/geocoder/results/maxmind_local.rb
135
138
  - lib/geocoder/results/nominatim.rb
136
- - lib/geocoder/results/okf.rb
137
139
  - lib/geocoder/results/opencagedata.rb
138
- - lib/geocoder/results/ovi.rb
140
+ - lib/geocoder/results/osmnames.rb
139
141
  - lib/geocoder/results/pelias.rb
140
142
  - lib/geocoder/results/pickpoint.rb
141
143
  - lib/geocoder/results/pointpin.rb
142
144
  - lib/geocoder/results/postcode_anywhere_uk.rb
145
+ - lib/geocoder/results/postcodes_io.rb
143
146
  - lib/geocoder/results/smarty_streets.rb
144
147
  - lib/geocoder/results/telize.rb
148
+ - lib/geocoder/results/tencent.rb
145
149
  - lib/geocoder/results/test.rb
146
150
  - lib/geocoder/results/yandex.rb
147
151
  - lib/geocoder/sql.rb
@@ -161,11 +165,7 @@ licenses:
161
165
  metadata:
162
166
  source_code_uri: https://github.com/alexreisner/geocoder
163
167
  changelog_uri: https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md
164
- post_install_message: |2+
165
-
166
-
167
- NOTE: Geocoder's default IP address lookup has changed from FreeGeoIP.net to IPInfo.io. If you explicitly specify :freegeoip in your configuration you must choose a different IP lookup before FreeGeoIP is discontinued on July 1, 2018. If you do not explicitly specify :freegeoip you do not need to change anything.
168
-
168
+ post_install_message:
169
169
  rdoc_options: []
170
170
  require_paths:
171
171
  - lib
@@ -173,15 +173,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
173
  requirements:
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
- version: 1.9.3
176
+ version: 2.0.0
177
177
  required_rubygems_version: !ruby/object:Gem::Requirement
178
178
  requirements:
179
179
  - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []
183
- rubyforge_project:
184
- rubygems_version: 2.5.2
183
+ rubygems_version: 3.0.1
185
184
  signing_key:
186
185
  specification_version: 4
187
186
  summary: Complete geocoding solution for Ruby.