geolocal 0.9 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65d27c3ffbd6c516bc62cb08663fd536472a24ef
4
- data.tar.gz: 85c77e798dab700c8ddb602fce533fad7794b46a
3
+ metadata.gz: 2f7cad64f85f04f0bd9971651e2470ad2f344640
4
+ data.tar.gz: 3e309a0a2464feb9c2431e34b2aacddfea18635c
5
5
  SHA512:
6
- metadata.gz: 8e94cb66a6465c12d7b8111fc99eca1cc2a800bcc7e0e98abfbe42f690cb03ba835ba88665be74330e85eeb9e314bcd8ee98f902ff9fcad989b9717455047cbe
7
- data.tar.gz: c97b4d0bc05f06481587c39b1410450036cf83887ee2188870b2e007c6a940914382c44e4a7bea0076a342fa400c098ab1b61f7f5ac52dcc6ff0f8edfc1f192c
6
+ metadata.gz: c9735c98cb5e6268510d41d792c9dcfb88428d4123f69855f74e03f2c48e133fdac101d6ee7a9dd6c3a90093f5bd0fa7b41a96b9a16508e1fa2f90282f1c57d8
7
+ data.tar.gz: 04cee72abe241e39642c681b87f003a6ab963d30d16182e1f206c438b1cdf5ec51711c1b0b4618deb462232a714c667856bff656fe174c404c7ffadc58c71148
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Geolocal
2
2
 
3
3
  Geocode IP addresses with a single Ruby if statement.
4
- No network access, no context switches, no delay. Just one low-calorie lookup:
5
- `Geolocal.in_spain?(request.remote_ip)`. 500,000 individual lookups
6
- per second is fairly typical performance.
4
+ No network access, no context switches, no delay,
5
+ just one low-calorie lookup like `Geolocal.in_spain?(request.remote_ip)`.
6
+
7
+ 500,000 individual lookups per second is fairly typical performance.
7
8
 
8
9
 
9
10
  ## Installation
@@ -14,17 +15,23 @@ Add this line to your Gemfile:
14
15
  gem 'geolocal'
15
16
  ```
16
17
 
18
+ And this line to your Rakefile:
19
+
20
+ ```ruby
21
+ require 'geolocal/tasks'
22
+ ```
17
23
 
18
24
  ## Usage
19
25
 
20
26
  If you're using Rails, run `rails generate geolocal` to create the configuration file.
21
27
  Otherwise, crib from [config/geolocal.rb](https://github.com/bronson/geolocal/tree/master/config/geolocal.rb).
22
28
 
23
- The config file describes the ranges you're interested in.
29
+ The configuration file describes the ranges you're interested in.
24
30
  Here's an example:
25
31
 
26
32
  ```ruby
27
33
  require 'geolocal/configuration'
34
+
28
35
  Geolocal.configure do |config|
29
36
  config.countries = {
30
37
  us: 'US',
@@ -40,6 +47,7 @@ creates the desired methods:
40
47
 
41
48
  ```ruby
42
49
  require 'geolocal'
50
+
43
51
  Geolocal.in_us?(request.remote_ip)
44
52
  Geolocal.in_spain?('2a05:af06::') # optional IPv6 support
45
53
  Geolocal.in_central_america?('200.16.66.0')
@@ -127,21 +135,26 @@ ruby contrib/benchmark-continents.rb
127
135
 
128
136
  ## Alternatives
129
137
 
130
- The [Geocoder gem](https://github.com/alexreisner/geocoder) offers
138
+ The [Geocoder gem](https://github.com/alexreisner/geocoder) also offers
131
139
  [local database services](https://github.com/alexreisner/geocoder#ip-address-local-database-services).
132
140
  It offers more options and more providers than Geolocal, but it's a little more complex and not as fast.
133
- Geolocal also doesn't add any dependencies to your deploy, potentially making it easier to get working
141
+ Geolocal also doesn't add any dependencies to your deploy, potentially making it easier to get it working
134
142
  with oddball environments like Heroku.
135
143
 
136
144
 
137
- ## TODO
145
+ ## Roadmap
146
+
147
+ * Add support for cities
148
+ * other sources for this data? [MainFacts](http://mainfacts.com/ip-address-space-addresses), [NirSoft](http://www.nirsoft.net/countryip/)
149
+ Also maybe allow providers to accept their own options?
150
+ * release 1.0!
151
+ * Detect nesting? Putting in_eu?, in_europe?, and in_france? in your config generates a lot of redundant overlap.
152
+ * Add support for for-pay features like lat/lon and timezones?
153
+
154
+
155
+ ## License
138
156
 
139
- - [ ] Add support for cities
140
- - [ ] other sources for this data? [MainFacts](http://mainfacts.com/ip-address-space-addresses), [NirSoft](http://www.nirsoft.net/countryip/)
141
- Also maybe allow providers to accept their own options?
142
- - [ ] release 1.0!
143
- - [ ] Detect nesting? Putting in_eu?, in_europe?, and in_france? generates a lot of redundant overlap.
144
- - [ ] Add support for for-pay features like lat/lon and timezones?
157
+ Pain-free MIT. Downloaded data is copyrighted by the provider you downloaded it from.
145
158
 
146
159
 
147
160
  ## Contributing
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
+ require 'geolocal/tasks'
3
4
 
4
5
  Dir.glob('lib/tasks/*.rake').each { |r| load r}
5
6
 
@@ -0,0 +1,29 @@
1
+ require 'geolocal/configuration'
2
+
3
+ namespace :geolocal do
4
+ def configured_provider
5
+ # we use this file by default
6
+ config='config/geolocal'
7
+
8
+ # but you can specify the config file on the command line:
9
+ # `rake geolocal config=contrib/continents`
10
+ config=ENV['config'] if ENV['config']
11
+ puts "loading geolocal configuration from #{config}"
12
+ require './' + config
13
+
14
+ Geolocal.configuration.load_provider.new
15
+ end
16
+
17
+ desc "Downloads the most recent geocoding information"
18
+ task :download do
19
+ configured_provider.download
20
+ end
21
+
22
+ desc "Updates your geocoding statements to use new data."
23
+ task :update => :download do
24
+ configured_provider.update
25
+ end
26
+ end
27
+
28
+ desc "shorthand for running geolocal:update"
29
+ task geolocal: 'geolocal:update'
@@ -1,3 +1,3 @@
1
1
  module Geolocal
2
- VERSION = "0.9"
2
+ VERSION = "0.9.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geolocal
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Bronson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-10 00:00:00.000000000 Z
11
+ date: 2015-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,14 +89,12 @@ files:
89
89
  - lib/generators/geolocal/USAGE
90
90
  - lib/generators/geolocal/geolocal_generator.rb
91
91
  - lib/generators/geolocal/templates/geolocal.rb
92
- - lib/geolocal.rb
93
92
  - lib/geolocal/configuration.rb
94
93
  - lib/geolocal/provider/base.rb
95
94
  - lib/geolocal/provider/db_ip.rb
96
95
  - lib/geolocal/provider/test.rb
97
- - lib/geolocal/railtie.rb
96
+ - lib/geolocal/tasks.rb
98
97
  - lib/geolocal/version.rb
99
- - lib/tasks/geolocal.rake
100
98
  - spec/data/dbip-country.csv.gz
101
99
  - spec/geolocal/configuration_spec.rb
102
100
  - spec/geolocal/provider/base_spec.rb
data/lib/geolocal.rb DELETED
@@ -1,5 +0,0 @@
1
- # If you're wondering why nothing's here, you probably wanted to require 'geolocal/configuration'
2
- # Once you define a configuration and generate the geolocation code, this module will have contents.
3
- module Geolocal
4
- require 'geolocal/railtie' if defined? Rails
5
- end
@@ -1,12 +0,0 @@
1
- require 'geolocal'
2
- require 'rails'
3
-
4
- module Geolocal
5
- class Railtie < Rails::Railtie
6
- railtie_name :geolocal
7
-
8
- rake_tasks do
9
- load "tasks/geolocal.rake"
10
- end
11
- end
12
- end
@@ -1,26 +0,0 @@
1
- # Provides geolocal's rake tasks.
2
-
3
- # we use this file by default
4
- config='config/geolocal'
5
-
6
- # but you can specify the config file on the command line:
7
- # `rake geolocal config=contrib/continents`
8
- config=ENV['config'] if ENV['config']
9
- puts "loading geolocal configuration from #{config}"
10
- require './' + config
11
-
12
-
13
- namespace :geolocal do
14
- desc "Downloads the most recent geocoding information"
15
- task :download do
16
- Geolocal.configuration.load_provider.new.download
17
- end
18
-
19
- desc "Updates your geocoding statements to use new data."
20
- task :update => :download do
21
- Geolocal.configuration.load_provider.new.update
22
- end
23
- end
24
-
25
- desc "shorthand for running geolocal:update"
26
- task geolocal: 'geolocal:update'