rgeoip 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gemtest ADDED
File without changes
data/Gemfile CHANGED
@@ -11,4 +11,5 @@ group :development do
11
11
  gem "jeweler", "~> 1.5.2"
12
12
  gem "rcov", ">= 0"
13
13
  gem "ZenTest"
14
+ gem "rack"
14
15
  end
data/Gemfile.lock CHANGED
@@ -7,6 +7,7 @@ GEM
7
7
  bundler (~> 1.0.0)
8
8
  git (>= 1.2.5)
9
9
  rake
10
+ rack (1.2.1)
10
11
  rake (0.8.7)
11
12
  rcov (0.9.9)
12
13
  yard (0.6.4)
@@ -18,5 +19,6 @@ DEPENDENCIES
18
19
  ZenTest
19
20
  bundler (~> 1.0.0)
20
21
  jeweler (~> 1.5.2)
22
+ rack
21
23
  rcov
22
24
  yard (~> 0.6.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/ext/rgeoip.c CHANGED
@@ -113,8 +113,6 @@ static VALUE
113
113
  gi_new(int argc, VALUE *argv, VALUE self)
114
114
  {
115
115
  Rgeoip *gi;
116
- VALUE flags;
117
- VALUE filenames;
118
116
  int i;
119
117
 
120
118
  Data_Get_Struct(self, Rgeoip, gi);
@@ -294,7 +292,7 @@ gid_new(int argc, VALUE *argv, VALUE self)
294
292
 
295
293
  rb_scan_args(argc, argv, "11", &filename, &flags);
296
294
 
297
- Check_Type(filename, T_STRING);
295
+ filename = StringValue(filename);
298
296
 
299
297
  gid->ptr = GeoIP_open(RSTRING_PTR(filename),
300
298
  GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE | GEOIP_MMAP_CACHE);
@@ -0,0 +1,27 @@
1
+ require 'rack'
2
+ require 'rgeoip'
3
+
4
+ module Rack::Rgeoip
5
+ def self.new(app, options={})
6
+ Lookup.new(app, options)
7
+ end
8
+
9
+ class Lookup
10
+ DEFAULT = { :db => '/usr/share/GeoIP/GeoIP.dat' }
11
+
12
+ def initialize(app, options={})
13
+ @app, @options = app, DEFAULT.merge(options)
14
+ @rgeoip = Rgeoip.new @options[:db]
15
+ end
16
+
17
+ def call(env)
18
+ @app.call(lookup env)
19
+ end
20
+
21
+ def lookup(env)
22
+ env.tap do
23
+ env['rack.geoip'] = @rgeoip.country(Rack::Request.new(env).ip)
24
+ end
25
+ end
26
+ end
27
+ end
data/rgeoip.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rgeoip}
8
- s.version = "0.0.0"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["miyucy"]
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "ext/extconf.rb",
29
29
  "ext/rgeoip.c",
30
+ "rgeoip.gemspec",
30
31
  "test/helper.rb",
31
32
  "test/test_rgeoip.rb",
32
33
  "test/test_rgeoip_database.rb"
Binary file
Binary file
data/test/helper.rb CHANGED
@@ -13,6 +13,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
13
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'ext'))
15
15
  require 'rgeoip'
16
+ require 'rack/rgeoip'
16
17
 
17
18
  class Test::Unit::TestCase
18
19
  end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class TestRackRgeoipLookup < Test::Unit::TestCase
4
+ def test_initialize
5
+ assert_respond_to(Rack::Rgeoip.new(nil), :call)
6
+ end
7
+
8
+ def test_initialize_with_hash
9
+ assert_nothing_raised { Rack::Rgeoip.new(nil, {}) }
10
+ end
11
+
12
+ def test_pass_to_app
13
+ Rack::Rgeoip.new(lambda { |env| assert env.has_key? 'rack.geoip' }).call({})
14
+ end
15
+ end
data/test/test_rgeoip.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'helper'
2
2
  require 'tempfile'
3
+ require 'pathname'
3
4
 
4
5
  class TestRgeoip < Test::Unit::TestCase
5
6
  def test_constant
@@ -16,6 +17,12 @@ class TestRgeoip < Test::Unit::TestCase
16
17
  }
17
18
  end
18
19
 
20
+ def test_open_with_pathname
21
+ assert_nothing_raised {
22
+ Rgeoip.new.open Pathname.new(paths[:country])
23
+ }
24
+ end
25
+
19
26
  def test_open_invalid_dbfile
20
27
  assert_raise(RuntimeError) {
21
28
  Rgeoip.new.open Tempfile.new("rgeoip").path
@@ -60,8 +67,8 @@ class TestRgeoip < Test::Unit::TestCase
60
67
 
61
68
  def paths
62
69
  {
63
- :country => File.expand_path("../GeoIP.dat", File.dirname(__FILE__)),
64
- :city => File.expand_path("../GeoLiteCity.dat", File.dirname(__FILE__)),
70
+ :country => File.expand_path("data/GeoIP.dat", File.dirname(__FILE__)),
71
+ :city => File.expand_path("data/GeoLiteCity.dat", File.dirname(__FILE__)),
65
72
  }
66
73
  end
67
74
 
@@ -76,8 +76,8 @@ class TestRgeoipDatabase < Test::Unit::TestCase
76
76
 
77
77
  def paths
78
78
  {
79
- :country => File.expand_path("../GeoIP.dat", File.dirname(__FILE__)),
80
- :city => File.expand_path("../GeoLiteCity.dat", File.dirname(__FILE__)),
79
+ :country => File.expand_path("data/GeoIP.dat", File.dirname(__FILE__)),
80
+ :city => File.expand_path("data/GeoLiteCity.dat", File.dirname(__FILE__)),
81
81
  }
82
82
  end
83
83
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeoip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
4
+ hash: 25
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - miyucy
@@ -15,10 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-26 00:00:00 +09:00
18
+ date: 2011-02-18 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ type: :development
22
23
  requirement: &id001 !ruby/object:Gem::Requirement
23
24
  none: false
24
25
  requirements:
@@ -30,11 +31,11 @@ dependencies:
30
31
  - 6
31
32
  - 0
32
33
  version: 0.6.0
33
- prerelease: false
34
34
  name: yard
35
- type: :development
36
35
  version_requirements: *id001
36
+ prerelease: false
37
37
  - !ruby/object:Gem::Dependency
38
+ type: :development
38
39
  requirement: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
@@ -46,11 +47,11 @@ dependencies:
46
47
  - 0
47
48
  - 0
48
49
  version: 1.0.0
49
- prerelease: false
50
50
  name: bundler
51
- type: :development
52
51
  version_requirements: *id002
52
+ prerelease: false
53
53
  - !ruby/object:Gem::Dependency
54
+ type: :development
54
55
  requirement: &id003 !ruby/object:Gem::Requirement
55
56
  none: false
56
57
  requirements:
@@ -62,11 +63,11 @@ dependencies:
62
63
  - 5
63
64
  - 2
64
65
  version: 1.5.2
65
- prerelease: false
66
66
  name: jeweler
67
- type: :development
68
67
  version_requirements: *id003
68
+ prerelease: false
69
69
  - !ruby/object:Gem::Dependency
70
+ type: :development
70
71
  requirement: &id004 !ruby/object:Gem::Requirement
71
72
  none: false
72
73
  requirements:
@@ -76,11 +77,11 @@ dependencies:
76
77
  segments:
77
78
  - 0
78
79
  version: "0"
79
- prerelease: false
80
80
  name: rcov
81
- type: :development
82
81
  version_requirements: *id004
82
+ prerelease: false
83
83
  - !ruby/object:Gem::Dependency
84
+ type: :development
84
85
  requirement: &id005 !ruby/object:Gem::Requirement
85
86
  none: false
86
87
  requirements:
@@ -90,10 +91,23 @@ dependencies:
90
91
  segments:
91
92
  - 0
92
93
  version: "0"
93
- prerelease: false
94
94
  name: ZenTest
95
- type: :development
96
95
  version_requirements: *id005
96
+ prerelease: false
97
+ - !ruby/object:Gem::Dependency
98
+ type: :development
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ name: rack
109
+ version_requirements: *id006
110
+ prerelease: false
97
111
  description: alternative libGeoIP binding for Ruby
98
112
  email: miyucy@gmail.com
99
113
  executables: []
@@ -105,6 +119,7 @@ extra_rdoc_files:
105
119
  - README.rdoc
106
120
  files:
107
121
  - .document
122
+ - .gemtest
108
123
  - Gemfile
109
124
  - Gemfile.lock
110
125
  - LICENSE.txt
@@ -113,8 +128,12 @@ files:
113
128
  - VERSION
114
129
  - ext/extconf.rb
115
130
  - ext/rgeoip.c
131
+ - lib/rack/rgeoip.rb
116
132
  - rgeoip.gemspec
133
+ - test/data/GeoIP.dat
134
+ - test/data/GeoLiteCity.dat
117
135
  - test/helper.rb
136
+ - test/test_rack_rgeoip_lookup.rb
118
137
  - test/test_rgeoip.rb
119
138
  - test/test_rgeoip_database.rb
120
139
  has_rdoc: true
@@ -147,11 +166,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
166
  requirements: []
148
167
 
149
168
  rubyforge_project:
150
- rubygems_version: 1.3.7
169
+ rubygems_version: 1.5.2
151
170
  signing_key:
152
171
  specification_version: 3
153
172
  summary: alternative libGeoIP binding for Ruby
154
173
  test_files:
155
174
  - test/helper.rb
175
+ - test/test_rack_rgeoip_lookup.rb
156
176
  - test/test_rgeoip.rb
157
177
  - test/test_rgeoip_database.rb