silver 0.2.1 → 0.2.3

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.
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: []