silver 0.2.1 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/silver/cache.rb +15 -2
  3. data/silver.gemspec +2 -2
  4. metadata +60 -60
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.3
data/lib/silver/cache.rb CHANGED
@@ -123,8 +123,11 @@ module Silver
123
123
  #
124
124
  # length is the number of entries to reduce the redis to
125
125
 
126
- def cull(length)
127
-
126
+ def cull(length,unique_key=nil)
127
+
128
+ if unique_key
129
+ cull_dupes_by(unique_key)
130
+ end
128
131
  @r.ltrim(@key,0,length-1)
129
132
 
130
133
  end
@@ -136,6 +139,16 @@ module Silver
136
139
  # Also turns every result hash into JSON before writing because Redis is string based.
137
140
  # Find will automatically parse these JSON strings upon retrieval.
138
141
 
142
+ def cull_dupes_by(unique_key)
143
+ dup_indices = []
144
+ results = @r.lrange(@key,0,-1)
145
+ keyed_results = results.map{|q| JSON.parse(q)[unique_key]}
146
+ elems = keyed_results.inject([]){|memo,obj| memo.include?(obj) ? memo << "dup" : memo << obj }
147
+ elems.each_with_index{|obj,i| dup_indices << i if obj == "dup"}
148
+ dup_indices.each{|i| @r.lset(@key,i,"dup")}
149
+ @r.lrem(@key,0,"dup")
150
+ end
151
+
139
152
  def write_new(results)
140
153
 
141
154
  new_date = results[0][@time_field].to_s
data/silver.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{silver}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Erik Hin-tone"]
12
- s.date = %q{2011-01-31}
12
+ s.date = %q{2011-05-17}
13
13
  s.description = %q{A lightweight, Redis-backed cacher and indexer for databases, REST API's, really anything you can query.}
14
14
  s.email = %q{hinton.erik@gmail.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silver
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Erik Hin-tone
@@ -15,13 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-31 00:00:00 -05:00
18
+ date: 2011-05-17 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rspec
22
+ type: :development
23
23
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ~>
@@ -32,12 +32,12 @@ dependencies:
32
32
  - 3
33
33
  - 0
34
34
  version: 2.3.0
35
- type: :development
36
- version_requirements: *id001
35
+ name: rspec
36
+ requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: bundler
38
+ type: :development
39
39
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
@@ -48,12 +48,12 @@ dependencies:
48
48
  - 0
49
49
  - 0
50
50
  version: 1.0.0
51
- type: :development
52
- version_requirements: *id002
51
+ name: bundler
52
+ requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- name: jeweler
54
+ type: :development
55
55
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
59
  - - ~>
@@ -64,12 +64,12 @@ dependencies:
64
64
  - 5
65
65
  - 2
66
66
  version: 1.5.2
67
- type: :development
68
- version_requirements: *id003
67
+ name: jeweler
68
+ requirement: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- name: rcov
70
+ type: :development
71
71
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
72
+ version_requirements: &id004 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ">="
@@ -78,12 +78,12 @@ dependencies:
78
78
  segments:
79
79
  - 0
80
80
  version: "0"
81
- type: :development
82
- version_requirements: *id004
81
+ name: rcov
82
+ requirement: *id004
83
83
  - !ruby/object:Gem::Dependency
84
- name: redis
84
+ type: :development
85
85
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
87
  none: false
88
88
  requirements:
89
89
  - - ~>
@@ -94,12 +94,12 @@ dependencies:
94
94
  - 1
95
95
  - 1
96
96
  version: 2.1.1
97
- type: :development
98
- version_requirements: *id005
97
+ name: redis
98
+ requirement: *id005
99
99
  - !ruby/object:Gem::Dependency
100
- name: yajl-ruby
100
+ type: :development
101
101
  prerelease: false
102
- requirement: &id006 !ruby/object:Gem::Requirement
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
103
  none: false
104
104
  requirements:
105
105
  - - ">="
@@ -110,12 +110,12 @@ dependencies:
110
110
  - 7
111
111
  - 7
112
112
  version: 0.7.7
113
- type: :development
114
- version_requirements: *id006
113
+ name: yajl-ruby
114
+ requirement: *id006
115
115
  - !ruby/object:Gem::Dependency
116
- name: text
116
+ type: :development
117
117
  prerelease: false
118
- requirement: &id007 !ruby/object:Gem::Requirement
118
+ version_requirements: &id007 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ~>
@@ -126,12 +126,12 @@ dependencies:
126
126
  - 2
127
127
  - 0
128
128
  version: 0.2.0
129
- type: :development
130
- version_requirements: *id007
129
+ name: text
130
+ requirement: *id007
131
131
  - !ruby/object:Gem::Dependency
132
- name: dm-core
132
+ type: :development
133
133
  prerelease: false
134
- requirement: &id008 !ruby/object:Gem::Requirement
134
+ version_requirements: &id008 !ruby/object:Gem::Requirement
135
135
  none: false
136
136
  requirements:
137
137
  - - ~>
@@ -142,12 +142,12 @@ dependencies:
142
142
  - 0
143
143
  - 0
144
144
  version: 1.0.0
145
- type: :development
146
- version_requirements: *id008
145
+ name: dm-core
146
+ requirement: *id008
147
147
  - !ruby/object:Gem::Dependency
148
- name: dm-sqlite-adapter
148
+ type: :development
149
149
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
150
+ version_requirements: &id009 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ~>
@@ -158,12 +158,12 @@ dependencies:
158
158
  - 0
159
159
  - 0
160
160
  version: 1.0.0
161
- type: :development
162
- version_requirements: *id009
161
+ name: dm-sqlite-adapter
162
+ requirement: *id009
163
163
  - !ruby/object:Gem::Dependency
164
- name: redis
164
+ type: :runtime
165
165
  prerelease: false
166
- requirement: &id010 !ruby/object:Gem::Requirement
166
+ version_requirements: &id010 !ruby/object:Gem::Requirement
167
167
  none: false
168
168
  requirements:
169
169
  - - ~>
@@ -174,12 +174,12 @@ dependencies:
174
174
  - 1
175
175
  - 1
176
176
  version: 2.1.1
177
- type: :runtime
178
- version_requirements: *id010
177
+ name: redis
178
+ requirement: *id010
179
179
  - !ruby/object:Gem::Dependency
180
- name: yajl-ruby
180
+ type: :runtime
181
181
  prerelease: false
182
- requirement: &id011 !ruby/object:Gem::Requirement
182
+ version_requirements: &id011 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ">="
@@ -190,12 +190,12 @@ dependencies:
190
190
  - 7
191
191
  - 7
192
192
  version: 0.7.7
193
- type: :runtime
194
- version_requirements: *id011
193
+ name: yajl-ruby
194
+ requirement: *id011
195
195
  - !ruby/object:Gem::Dependency
196
- name: text
196
+ type: :runtime
197
197
  prerelease: false
198
- requirement: &id012 !ruby/object:Gem::Requirement
198
+ version_requirements: &id012 !ruby/object:Gem::Requirement
199
199
  none: false
200
200
  requirements:
201
201
  - - ~>
@@ -206,12 +206,12 @@ dependencies:
206
206
  - 2
207
207
  - 0
208
208
  version: 0.2.0
209
- type: :runtime
210
- version_requirements: *id012
209
+ name: text
210
+ requirement: *id012
211
211
  - !ruby/object:Gem::Dependency
212
- name: dm-core
212
+ type: :development
213
213
  prerelease: false
214
- requirement: &id013 !ruby/object:Gem::Requirement
214
+ version_requirements: &id013 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ~>
@@ -222,12 +222,12 @@ dependencies:
222
222
  - 0
223
223
  - 0
224
224
  version: 1.0.0
225
- type: :development
226
- version_requirements: *id013
225
+ name: dm-core
226
+ requirement: *id013
227
227
  - !ruby/object:Gem::Dependency
228
- name: dm-sqlite-adapter
228
+ type: :development
229
229
  prerelease: false
230
- requirement: &id014 !ruby/object:Gem::Requirement
230
+ version_requirements: &id014 !ruby/object:Gem::Requirement
231
231
  none: false
232
232
  requirements:
233
233
  - - ~>
@@ -238,8 +238,8 @@ dependencies:
238
238
  - 0
239
239
  - 0
240
240
  version: 1.0.0
241
- type: :development
242
- version_requirements: *id014
241
+ name: dm-sqlite-adapter
242
+ requirement: *id014
243
243
  description: A lightweight, Redis-backed cacher and indexer for databases, REST API's, really anything you can query.
244
244
  email: hinton.erik@gmail.com
245
245
  executables: []