google_maps_geocoder 0.3.1 → 0.4.0.pre1
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.
- checksums.yaml +6 -14
- data/.ruby-version +1 -1
- data/.travis.yml +5 -2
- data/Gemfile +1 -1
- data/README.md +18 -10
- data/Rakefile +1 -1
- data/google_maps_geocoder.gemspec +16 -12
- data/lib/{google_maps_geocoder.rb → google_maps_geocoder/google_maps_geocoder.rb} +64 -19
- data/lib/google_maps_geocoder/version.rb +4 -0
- data/spec/lib/google_maps_geocoder_spec.rb +36 -14
- data/spec/spec_helper.rb +4 -4
- metadata +37 -23
- data/lib/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZGFiNmM3MDg0Y2FmZDMwMjBiOTFkOTA5MmQ5NTU1ZGQ1NWMxMjgxMDJmODVm
|
10
|
-
Y2ExNTIwZGY4M2ZiZDIwYmRhYmZlY2M4NGNmNDY4OWJjYmZkODA2Y2NlY2M5
|
11
|
-
ZDAzZmY2YThmYzhjZTM3MmZmOWEyY2M1ZWJlODQ4MGE0N2YyYjQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDNhMzgyOWQzODE5NDk1NDdlZGQ5MzZlZTRjNTYxNzMyMTIzNDcyMTg3Nzgw
|
14
|
-
NjMyNjI2ZTFhOGY2YmVlYjA2N2Y3Y2NjNDhjMmFhZDhiZTgzOTZhN2RjMzE0
|
15
|
-
NDhlMDdhYmRiNGNhMmE1YjJhMDU0NWU3ZDQyMWUxMWQzMjM2OTA=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 843c384bc9a07abcd15c8d310bced7b1fc80c979
|
4
|
+
data.tar.gz: 3336c894ba548664bcfb7f5b2ef91aed785fff21
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fe1386c06d1bfedea6c5be18de70bd95455cda8778615f918d21bc7991ec197c5aee9bd8525bea23b520b8c00cd734c9a42aad68d5331277623eedb25569928f
|
7
|
+
data.tar.gz: 105330f683835366620945bc14dd2b2118f9f3bc07a1d97f8445f5660152a919ec565c23196c1bf842b1c89ceb6f53e65f55af8f207780c7bcf7b8cdd1963fbd
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.2.2
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
|
-
gemspec
|
2
|
+
gemspec
|
data/README.md
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
# GoogleMapsGeocoder
|
1
|
+
# GoogleMapsGeocoder
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/google_maps_geocoder)
|
4
|
+
[](https://codeclimate.com/github/ivanoblomov/google_maps_geocoder)
|
5
|
+
[](https://coveralls.io/github/ivanoblomov/google_maps_geocoder?branch=master)
|
6
|
+
[](http://travis-ci.org/ivanoblomov/google_maps_geocoder)
|
7
|
+
[](https://gemnasium.com/ivanoblomov/google_maps_geocoder)
|
2
8
|
|
3
9
|
A simple PORO wrapper for geocoding with Google Maps.
|
4
10
|
|
5
11
|
## Installation
|
6
12
|
|
7
|
-
|
13
|
+
Add GoogleMapsGeocoder to your Gemfile and run `bundle`:
|
8
14
|
|
9
15
|
```ruby
|
10
16
|
gem 'google_maps_geocoder'
|
11
17
|
```
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
```ruby
|
16
|
-
config.gem 'google_maps_geocoder'
|
17
|
-
```
|
18
|
-
|
19
|
-
Or try it out in <b>irb</b> with:
|
19
|
+
Or try it out in `irb` with:
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
require './lib/google_maps_geocoder'
|
22
|
+
require './lib/google_maps_geocoder/google_maps_geocoder'
|
23
23
|
```
|
24
24
|
|
25
25
|
## Ready to Go in One Step
|
@@ -76,6 +76,14 @@ The complete, hopefully self-explanatory, API is:
|
|
76
76
|
* state_long_name
|
77
77
|
* state_short_name
|
78
78
|
|
79
|
+
## Google Maps API Key (Optional)
|
80
|
+
|
81
|
+
To have GoogleMapsGeocoder use your Google Maps API key, set it as an environment variable:
|
82
|
+
|
83
|
+
```bash
|
84
|
+
export GOOGLE_MAPS_API_KEY=[your key]
|
85
|
+
```
|
86
|
+
|
79
87
|
## Contributing to google_maps_geocoder
|
80
88
|
|
81
89
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/Rakefile
CHANGED
@@ -1,21 +1,25 @@
|
|
1
|
-
require File.expand_path '../lib/version', __FILE__
|
1
|
+
require File.expand_path '../lib/google_maps_geocoder/version', __FILE__
|
2
2
|
Gem::Specification.new do |s|
|
3
|
-
s.name =
|
3
|
+
s.name = 'google_maps_geocoder'
|
4
4
|
s.version = GoogleMapsGeocoder::VERSION.dup
|
5
|
-
s.summary =
|
6
|
-
s.description =
|
7
|
-
|
8
|
-
|
5
|
+
s.summary = 'A simple PORO wrapper for geocoding with Google Maps.'
|
6
|
+
s.description = 'Geocode a location without worrying about parsing Google '\
|
7
|
+
"Maps' response. GoogleMapsGeocoder wraps it in a plain-old "\
|
8
|
+
'Ruby object.'
|
9
|
+
s.homepage = 'http://github.com/ivanoblomov/google_maps_geocoder'
|
10
|
+
s.authors = ['Roderick Monje']
|
9
11
|
|
12
|
+
s.add_development_dependency 'coveralls', '>= 0'
|
10
13
|
s.add_development_dependency 'rake', '>= 0'
|
11
14
|
s.add_development_dependency 'rspec', '>= 0'
|
12
|
-
s.add_development_dependency '
|
15
|
+
s.add_development_dependency 'rubocop', '>= 0'
|
13
16
|
|
14
17
|
s.add_runtime_dependency 'activesupport', '>= 0'
|
15
18
|
s.add_runtime_dependency 'rack', '>= 0'
|
16
19
|
|
17
|
-
s.files
|
18
|
-
s.test_files
|
19
|
-
s.executables
|
20
|
-
|
21
|
-
|
20
|
+
s.files = `git ls-files`.split "\n"
|
21
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split "\n"
|
22
|
+
s.executables = `git ls-files -- bin/*`.split("\n")
|
23
|
+
.map { |f| File.basename f }
|
24
|
+
s.require_paths = ['lib']
|
25
|
+
end
|
@@ -3,15 +3,28 @@ require 'logger'
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'rack'
|
5
5
|
|
6
|
+
# A simple PORO wrapper for geocoding with Google Maps.
|
6
7
|
class GoogleMapsGeocoder
|
8
|
+
GOOGLE_ADDRESS_SEGMENTS = %i(
|
9
|
+
city country_long_name country_short_name county lat lng postal_code
|
10
|
+
state_long_name state_short_name
|
11
|
+
).freeze
|
12
|
+
GOOGLE_API_URI = 'https://maps.googleapis.com/maps/api/geocode/json'.freeze
|
13
|
+
|
14
|
+
ALL_ADDRESS_SEGMENTS = (
|
15
|
+
GOOGLE_ADDRESS_SEGMENTS + %i(
|
16
|
+
formatted_address formatted_street_address
|
17
|
+
)
|
18
|
+
).freeze
|
19
|
+
|
7
20
|
# Returns the complete formatted address with standardized abbreviations.
|
8
21
|
attr_reader :formatted_address
|
9
22
|
# Returns the formatted street address with standardized abbreviations.
|
10
23
|
attr_reader :formatted_street_address
|
11
24
|
# Self-explanatory
|
12
|
-
attr_reader
|
25
|
+
attr_reader(*GOOGLE_ADDRESS_SEGMENTS)
|
13
26
|
|
14
|
-
# Instance Methods: Overrides
|
27
|
+
# Instance Methods: Overrides ================================================
|
15
28
|
|
16
29
|
# Geocodes the specified address and wraps the results in a geocoder object.
|
17
30
|
#
|
@@ -23,16 +36,19 @@ class GoogleMapsGeocoder
|
|
23
36
|
#
|
24
37
|
# white_house = GoogleMapsGeocoder.new('1600 Pennsylvania Washington')
|
25
38
|
# white_house.formatted_address
|
26
|
-
# => "1600 Pennsylvania Avenue Northwest, President's Park,
|
27
|
-
|
39
|
+
# => "1600 Pennsylvania Avenue Northwest, President's Park,
|
40
|
+
# Washington, DC 20500, USA"
|
41
|
+
def initialize(data)
|
28
42
|
@json = data.is_a?(String) ? json_from_url(data) : data
|
29
|
-
|
43
|
+
fail "Geocoding \"#{data}\" exceeded query limit! Google returned...\n"\
|
44
|
+
"#{@json.inspect}" if @json.blank? || @json['status'] != 'OK'
|
30
45
|
set_attributes_from_json
|
31
|
-
logger
|
32
|
-
|
46
|
+
logger.info('GoogleMapsGeocoder') do
|
47
|
+
"Geocoded \"#{data}\" => \"#{formatted_address}\""
|
48
|
+
end
|
33
49
|
end
|
34
50
|
|
35
|
-
# Instance Methods
|
51
|
+
# Instance Methods ===========================================================
|
36
52
|
|
37
53
|
# Returns true if the address Google returns is an exact match.
|
38
54
|
#
|
@@ -42,7 +58,7 @@ class GoogleMapsGeocoder
|
|
42
58
|
# white_house.exact_match?
|
43
59
|
# => true
|
44
60
|
def exact_match?
|
45
|
-
!
|
61
|
+
!self.partial_match?
|
46
62
|
end
|
47
63
|
|
48
64
|
# Returns true if the address Google returns isn't an exact match.
|
@@ -58,18 +74,39 @@ class GoogleMapsGeocoder
|
|
58
74
|
|
59
75
|
private
|
60
76
|
|
61
|
-
def
|
62
|
-
|
77
|
+
def api_key
|
78
|
+
@api_key ||= "&key=#{ENV['GOOGLE_MAPS_API_KEY']}" if
|
79
|
+
ENV['GOOGLE_MAPS_API_KEY']
|
80
|
+
end
|
81
|
+
|
82
|
+
def http(uri)
|
83
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
84
|
+
http.use_ssl = true
|
85
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
86
|
+
http
|
87
|
+
end
|
88
|
+
|
89
|
+
def json_from_url(url)
|
90
|
+
uri = URI.parse query_url(url)
|
91
|
+
logger.debug('GoogleMapsGeocoder') { uri }
|
92
|
+
response = http(uri).request(Net::HTTP::Get.new(uri.request_uri))
|
63
93
|
ActiveSupport::JSON.decode response.body
|
64
94
|
end
|
65
95
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
96
|
+
def logger
|
97
|
+
@logger ||= Logger.new STDERR
|
98
|
+
end
|
99
|
+
|
100
|
+
def parse_address_component_type(type, name = 'long_name')
|
101
|
+
address_component = @json['results'][0]['address_components'].detect do |ac|
|
102
|
+
ac['types'] && ac['types'].include?(type)
|
103
|
+
end
|
104
|
+
address_component && address_component[name]
|
69
105
|
end
|
70
106
|
|
71
107
|
def parse_city
|
72
|
-
parse_address_component_type('sublocality') ||
|
108
|
+
parse_address_component_type('sublocality') ||
|
109
|
+
parse_address_component_type('locality')
|
73
110
|
end
|
74
111
|
|
75
112
|
def parse_country_long_name
|
@@ -89,7 +126,8 @@ class GoogleMapsGeocoder
|
|
89
126
|
end
|
90
127
|
|
91
128
|
def parse_formatted_street_address
|
92
|
-
"#{parse_address_component_type('street_number')}
|
129
|
+
"#{parse_address_component_type('street_number')} "\
|
130
|
+
"#{parse_address_component_type('route')}"
|
93
131
|
end
|
94
132
|
|
95
133
|
def parse_lat
|
@@ -98,7 +136,7 @@ class GoogleMapsGeocoder
|
|
98
136
|
|
99
137
|
def parse_lng
|
100
138
|
@json['results'][0]['geometry']['location']['lng']
|
101
|
-
|
139
|
+
end
|
102
140
|
|
103
141
|
def parse_postal_code
|
104
142
|
parse_address_component_type('postal_code')
|
@@ -112,7 +150,14 @@ class GoogleMapsGeocoder
|
|
112
150
|
parse_address_component_type('administrative_area_level_1', 'short_name')
|
113
151
|
end
|
114
152
|
|
153
|
+
def query_url(query)
|
154
|
+
"#{GOOGLE_API_URI}?address=#{Rack::Utils.escape query}&sensor=false"\
|
155
|
+
"#{api_key}"
|
156
|
+
end
|
157
|
+
|
115
158
|
def set_attributes_from_json
|
116
|
-
|
159
|
+
ALL_ADDRESS_SEGMENTS.each do |segment|
|
160
|
+
instance_variable_set :"@#{segment}", send("parse_#{segment}")
|
161
|
+
end
|
117
162
|
end
|
118
|
-
end
|
163
|
+
end
|
@@ -13,8 +13,8 @@ describe GoogleMapsGeocoder do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
before(:each) do
|
16
|
-
pending 'waiting for a network connection'
|
17
|
-
pending 'waiting for query limit to pass'
|
16
|
+
pending 'waiting for a network connection' if @no_network
|
17
|
+
pending 'waiting for query limit to pass' if @query_limit
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'with "837 Union Street Brooklyn NY"' do
|
@@ -24,13 +24,16 @@ describe GoogleMapsGeocoder do
|
|
24
24
|
context 'address' do
|
25
25
|
it { expect(subject.formatted_street_address).to eq '837 Union Street' }
|
26
26
|
it { expect(subject.city).to eq 'Brooklyn' }
|
27
|
-
it { expect(subject.county).to match
|
27
|
+
it { expect(subject.county).to match(/Kings/) }
|
28
28
|
it { expect(subject.state_long_name).to eq 'New York' }
|
29
29
|
it { expect(subject.state_short_name).to eq 'NY' }
|
30
|
-
it { expect(subject.postal_code).to match
|
30
|
+
it { expect(subject.postal_code).to match(/112[0-9]{2}/) }
|
31
31
|
it { expect(subject.country_short_name).to eq 'US' }
|
32
32
|
it { expect(subject.country_long_name).to eq 'United States' }
|
33
|
-
it
|
33
|
+
it do
|
34
|
+
expect(subject.formatted_address)
|
35
|
+
.to match(/837 Union St, Brooklyn, NY 112[0-9]{2}, USA/)
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
39
|
context 'coordinates' do
|
@@ -44,19 +47,38 @@ describe GoogleMapsGeocoder do
|
|
44
47
|
it { should be_partial_match }
|
45
48
|
|
46
49
|
context 'address' do
|
47
|
-
it
|
50
|
+
it do
|
51
|
+
expect(subject.formatted_street_address)
|
52
|
+
.to eq '1600 Pennsylvania Avenue Southeast'
|
53
|
+
end
|
48
54
|
it { expect(subject.city).to eq 'Washington' }
|
49
55
|
it { expect(subject.state_long_name).to eq 'District of Columbia' }
|
50
56
|
it { expect(subject.state_short_name).to eq 'DC' }
|
51
|
-
it { expect(subject.postal_code).to match
|
57
|
+
it { expect(subject.postal_code).to match(/2000[0-9]/) }
|
52
58
|
it { expect(subject.country_short_name).to eq 'US' }
|
53
59
|
it { expect(subject.country_long_name).to eq 'United States' }
|
54
|
-
it
|
55
|
-
|
60
|
+
it do
|
61
|
+
expect(subject.formatted_address)
|
62
|
+
.to match(/1600 Pennsylvania Ave SE, Washington, DC 20003, USA/)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'coordinates' do
|
67
|
+
it { expect(subject.lat).to be_within(0.005).of(38.8791981) }
|
68
|
+
it { expect(subject.lng).to be_within(0.005).of(-76.9818437) }
|
69
|
+
end
|
70
|
+
end
|
56
71
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
72
|
+
context "when ENV['GOOGLE_MAPS_API_KEY'] = 'INVALID_KEY'" do
|
73
|
+
before { ENV['GOOGLE_MAPS_API_KEY'] = 'INVALID_KEY' }
|
74
|
+
|
75
|
+
subject { @exact_match }
|
76
|
+
|
77
|
+
it do
|
78
|
+
expect(subject.send :query_url, nil).to eq(
|
79
|
+
'https://maps.googleapis.com/maps/api/geocode/json?address='\
|
80
|
+
'&sensor=false&key=INVALID_KEY'
|
81
|
+
)
|
82
|
+
end
|
61
83
|
end
|
62
|
-
end
|
84
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require '
|
2
|
-
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
3
|
require 'rubygems'
|
4
4
|
require 'bundler'
|
5
5
|
begin
|
6
6
|
Bundler.setup(:default, :development)
|
7
7
|
rescue Bundler::BundlerError => e
|
8
8
|
$stderr.puts e.message
|
9
|
-
$stderr.puts
|
9
|
+
$stderr.puts 'Run `bundle install` to install missing gems'
|
10
10
|
exit e.status_code
|
11
11
|
end
|
12
12
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
13
13
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
14
|
-
require 'google_maps_geocoder'
|
14
|
+
require 'google_maps_geocoder/google_maps_geocoder'
|
metadata
CHANGED
@@ -1,83 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_maps_geocoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roderick Monje
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: coveralls
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rake
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- -
|
31
|
+
- - ">="
|
18
32
|
- !ruby/object:Gem::Version
|
19
33
|
version: '0'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- -
|
38
|
+
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- -
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: rubocop
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: activesupport
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '0'
|
62
76
|
type: :runtime
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rack
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
description: Geocode a location without worrying about parsing Google Maps' response.
|
@@ -87,17 +101,17 @@ executables: []
|
|
87
101
|
extensions: []
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
90
|
-
- .document
|
91
|
-
- .gitignore
|
92
|
-
- .ruby-version
|
93
|
-
- .travis.yml
|
104
|
+
- ".document"
|
105
|
+
- ".gitignore"
|
106
|
+
- ".ruby-version"
|
107
|
+
- ".travis.yml"
|
94
108
|
- Gemfile
|
95
109
|
- LICENSE.txt
|
96
110
|
- README.md
|
97
111
|
- Rakefile
|
98
112
|
- google_maps_geocoder.gemspec
|
99
|
-
- lib/google_maps_geocoder.rb
|
100
|
-
- lib/version.rb
|
113
|
+
- lib/google_maps_geocoder/google_maps_geocoder.rb
|
114
|
+
- lib/google_maps_geocoder/version.rb
|
101
115
|
- spec/lib/google_maps_geocoder_spec.rb
|
102
116
|
- spec/spec_helper.rb
|
103
117
|
homepage: http://github.com/ivanoblomov/google_maps_geocoder
|
@@ -109,17 +123,17 @@ require_paths:
|
|
109
123
|
- lib
|
110
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
111
125
|
requirements:
|
112
|
-
- -
|
126
|
+
- - ">="
|
113
127
|
- !ruby/object:Gem::Version
|
114
128
|
version: '0'
|
115
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
130
|
requirements:
|
117
|
-
- -
|
131
|
+
- - ">"
|
118
132
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
133
|
+
version: 1.3.1
|
120
134
|
requirements: []
|
121
135
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
136
|
+
rubygems_version: 2.4.6
|
123
137
|
signing_key:
|
124
138
|
specification_version: 4
|
125
139
|
summary: A simple PORO wrapper for geocoding with Google Maps.
|
data/lib/version.rb
DELETED