trifle 0.1.0 → 0.1.1
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.
- data/.travis.yml +1 -11
- data/Gemfile +1 -1
- data/README.md +1 -0
- data/bin/trifle +2 -2
- data/lib/trifle.rb +2 -2
- data/lib/trifle/finder.rb +1 -1
- data/lib/trifle/loader.rb +4 -2
- data/lib/trifle/version.rb +1 -1
- data/spec/trifle/finder_spec.rb +2 -2
- data/spec/trifle/initialize_with_redis_spec.rb +2 -2
- data/spec/trifle/loader_spec.rb +13 -12
- data/spec/trifle_spec.rb +3 -3
- data/trifle.gemspec +1 -0
- metadata +20 -4
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -66,6 +66,7 @@ trifle.find "192.168.1.1"
|
|
66
66
|
|
67
67
|
## Release notes
|
68
68
|
|
69
|
+
* **0.1.1** Made 1.8.7 compatible
|
69
70
|
* **0.0.8** Fixed a search bug that created conflicts between IPv4 and IPv6 data
|
70
71
|
* **0.0.7** Loading now happens into separate key, making loading possible without downtime
|
71
72
|
* **0.0.6** Added a fix for invalid IPs
|
data/bin/trifle
CHANGED
@@ -8,7 +8,7 @@ if ARGV.count < 2
|
|
8
8
|
exit(1)
|
9
9
|
end
|
10
10
|
|
11
|
-
redis = Redis.new(url
|
11
|
+
redis = Redis.new(:url => ARGV[0])
|
12
12
|
ARGV.shift
|
13
13
|
|
14
14
|
filenames = []
|
@@ -27,5 +27,5 @@ ARGV.each do |arg|
|
|
27
27
|
end
|
28
28
|
|
29
29
|
puts "Loading #{filenames.join(", ")}"
|
30
|
-
Trifle.new(redis, options).load(filenames
|
30
|
+
Trifle.new(redis, options).load(:filenames => filenames)
|
31
31
|
puts "Trifle loaded"
|
data/lib/trifle.rb
CHANGED
@@ -18,10 +18,10 @@ class Trifle
|
|
18
18
|
protected
|
19
19
|
|
20
20
|
def loader
|
21
|
-
@loader = Loader.new(redis, key
|
21
|
+
@loader = Loader.new(redis, :key => key)
|
22
22
|
end
|
23
23
|
|
24
24
|
def finder
|
25
|
-
@finder = Finder.new(redis, key
|
25
|
+
@finder = Finder.new(redis, :key => key)
|
26
26
|
end
|
27
27
|
end
|
data/lib/trifle/finder.rb
CHANGED
data/lib/trifle/loader.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
require "trifle/initialize_with_redis"
|
2
|
+
require "fastercsv"
|
2
3
|
require "csv"
|
3
4
|
|
4
5
|
class Trifle
|
@@ -57,7 +58,8 @@ class Trifle
|
|
57
58
|
|
58
59
|
def parse contents
|
59
60
|
contents.gsub!('", "', '","')
|
60
|
-
CSV
|
61
|
+
csv = RUBY_VERSION =~ /^1\.8/ ? FasterCSV : CSV
|
62
|
+
csv.parse(contents)
|
61
63
|
end
|
62
64
|
|
63
65
|
def valid? data
|
data/lib/trifle/version.rb
CHANGED
data/spec/trifle/finder_spec.rb
CHANGED
@@ -28,7 +28,7 @@ describe Trifle::Finder do
|
|
28
28
|
@redis = Redis.new
|
29
29
|
@trifle = Trifle.new(@redis)
|
30
30
|
@finder = Trifle::Finder.new(@redis)
|
31
|
-
@trifle.load(data
|
31
|
+
@trifle.load(:data => @valid_data)
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "#handle" do
|
@@ -45,7 +45,7 @@ describe Trifle::Finder do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should not fail if there's only 1 record" do
|
48
|
-
@trifle.load(data
|
48
|
+
@trifle.load(:data => [["82.132.242.55","82.132.242.55","1384444471","1384444471","GB","United Kingdrom"]])
|
49
49
|
@finder.handle("127.0.0.1").should be_nil
|
50
50
|
end
|
51
51
|
|
@@ -14,11 +14,11 @@ describe Trifle::InitializeWithRedis do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should fail without a redis instance" do
|
17
|
-
|
17
|
+
lambda { @klass.new(nil) }.should raise_error(ArgumentError)
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should accept an optional redis key" do
|
21
|
-
instance = @klass.new(Redis.new, key
|
21
|
+
instance = @klass.new(Redis.new, :key => "foo")
|
22
22
|
instance.key.should be == "foo"
|
23
23
|
end
|
24
24
|
end
|
data/spec/trifle/loader_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe Trifle::Loader do
|
|
25
25
|
it "should pass it on to load_files" do
|
26
26
|
filename = 'data.csv'
|
27
27
|
@loader.should_receive(:load_files).with([filename])
|
28
|
-
@loader.handle(filename
|
28
|
+
@loader.handle(:filename => filename)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -33,7 +33,7 @@ describe Trifle::Loader do
|
|
33
33
|
it "should pass it on to load_files" do
|
34
34
|
filenames = ['data1.csv', 'data2.csv']
|
35
35
|
@loader.should_receive(:load_files).with(filenames)
|
36
|
-
@loader.handle(filenames
|
36
|
+
@loader.handle(:filenames => filenames)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -41,14 +41,14 @@ describe Trifle::Loader do
|
|
41
41
|
it "should pass it on to load_data" do
|
42
42
|
data = [:foo, :bar]
|
43
43
|
@loader.should_receive(:load_data).with(data)
|
44
|
-
@loader.handle(data
|
44
|
+
@loader.handle(:data => data)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
context "when given anything else" do
|
49
49
|
it "should raise an error" do
|
50
|
-
|
51
|
-
|
50
|
+
lambda { @loader.handle(:foo => :bar) }.should raise_error(ArgumentError)
|
51
|
+
lambda { @loader.handle }.should raise_error(ArgumentError)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -70,14 +70,14 @@ describe Trifle::Loader do
|
|
70
70
|
|
71
71
|
context "when given anything but an array of strings" do
|
72
72
|
it "should raise an error" do
|
73
|
-
|
74
|
-
|
73
|
+
lambda { @loader.send(:load_files, "") }.should raise_error(ArgumentError)
|
74
|
+
lambda { @loader.send(:load_files, [:foo]) }.should raise_error(ArgumentError)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
context "when given a filename for a file that's missing" do
|
79
79
|
it "should raise an error" do
|
80
|
-
|
80
|
+
lambda { @loader.send(:load_files, ["foobar.csv"]) }.should raise_error(/No such file or directory - foobar.csv/)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -111,13 +111,13 @@ describe Trifle::Loader do
|
|
111
111
|
context "when given invalid data" do
|
112
112
|
it "should raise an error" do
|
113
113
|
@loader.should_receive(:valid?).and_return(false)
|
114
|
-
|
114
|
+
lambda { @loader.send(:load_data, @valid_data) }.should raise_error(ArgumentError)
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
context "when given anything but an array" do
|
119
119
|
it "should raise an error" do
|
120
|
-
|
120
|
+
lambda { @loader.send(:load_data, :rubbish) }.should raise_error(ArgumentError)
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
@@ -128,7 +128,8 @@ describe Trifle::Loader do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should raise an error for invalid csv data" do
|
131
|
-
|
131
|
+
csv = RUBY_VERSION =~ /^1\.8/ ? FasterCSV : CSV
|
132
|
+
lambda { @loader.send(:parse, '"foo",","#') }.should raise_error(csv::MalformedCSVError)
|
132
133
|
end
|
133
134
|
|
134
135
|
it "should handle ipv6 data" do
|
@@ -136,7 +137,7 @@ describe Trifle::Loader do
|
|
136
137
|
"2c0f:ffe8::", "2c0f:ffe8:ffff:ffff:ffff:ffff:ffff:ffff", "58569106662796955307479896348547874816", "58569106742025117821744233942091825151", "NG", "Nigeria"
|
137
138
|
"2c0f:fff0::", "2c0f:fff0:ffff:ffff:ffff:ffff:ffff:ffff", "58569107296622255421594597096899477504", "58569107375850417935858934690443427839", "NG", "Nigeria"
|
138
139
|
CSV
|
139
|
-
|
140
|
+
lambda { @loader.send(:parse, @ipv6csv) }.should_not raise_error
|
140
141
|
end
|
141
142
|
end
|
142
143
|
|
data/spec/trifle_spec.rb
CHANGED
@@ -10,12 +10,12 @@ describe Trifle do
|
|
10
10
|
before do
|
11
11
|
@redis = Redis.new
|
12
12
|
@trifle = Trifle.new(@redis)
|
13
|
-
@options = { filenames
|
13
|
+
@options = { :filenames => "foobar.csv" }
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should pass this to the loader" do
|
17
17
|
loader = mock Trifle::Loader
|
18
|
-
Trifle::Loader.should_receive(:new).with(@redis, key
|
18
|
+
Trifle::Loader.should_receive(:new).with(@redis, :key => @trifle.key).and_return(loader)
|
19
19
|
loader.should_receive(:handle).with(@options)
|
20
20
|
@trifle.load @options
|
21
21
|
end
|
@@ -30,7 +30,7 @@ describe Trifle do
|
|
30
30
|
|
31
31
|
it "should pass this to the finder" do
|
32
32
|
finder = mock Trifle::Finder
|
33
|
-
Trifle::Finder.should_receive(:new).with(@redis, key
|
33
|
+
Trifle::Finder.should_receive(:new).with(@redis, :key => @trifle.key).and_return(finder)
|
34
34
|
finder.should_receive(:handle).with(@ip)
|
35
35
|
@trifle.find @ip
|
36
36
|
end
|
data/trifle.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trifle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 3.0.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: fastercsv
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 1.5.5
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.5.5
|
94
110
|
description: Stores the GeoIP databases in Redis and gives it a simple way to lookup
|
95
111
|
IPs and map them to countries
|
96
112
|
email:
|
@@ -133,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
149
|
version: '0'
|
134
150
|
segments:
|
135
151
|
- 0
|
136
|
-
hash:
|
152
|
+
hash: -1333851127389149991
|
137
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
154
|
none: false
|
139
155
|
requirements:
|
@@ -142,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
158
|
version: '0'
|
143
159
|
segments:
|
144
160
|
- 0
|
145
|
-
hash:
|
161
|
+
hash: -1333851127389149991
|
146
162
|
requirements: []
|
147
163
|
rubyforge_project: trifle
|
148
164
|
rubygems_version: 1.8.24
|