frivol 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/doc/classes/Frivol.html +30 -11
- data/doc/classes/Frivol.src/M000003.html +1 -1
- data/doc/classes/Frivol.src/M000004.html +1 -1
- data/doc/classes/Frivol.src/M000005.html +1 -1
- data/doc/classes/Frivol.src/M000006.html +4 -5
- data/doc/classes/Frivol.src/M000007.html +5 -5
- data/doc/classes/Frivol.src/M000008.html +19 -0
- data/doc/classes/Frivol/ClassMethods.html +15 -15
- data/doc/classes/Frivol/ClassMethods.src/M000009.html +4 -4
- data/doc/classes/Frivol/ClassMethods.src/M000010.html +5 -39
- data/doc/classes/Frivol/ClassMethods.src/M000011.html +61 -0
- data/doc/classes/Frivol/Config.html +15 -15
- data/doc/classes/Frivol/Config.src/M000012.html +4 -4
- data/doc/classes/Frivol/Config.src/M000013.html +4 -5
- data/doc/classes/Frivol/Config.src/M000014.html +19 -0
- data/doc/classes/Time.src/M000001.html +1 -1
- data/doc/classes/Time.src/M000002.html +1 -1
- data/doc/created.rid +1 -1
- data/doc/files/lib/frivol_rb.html +4 -2
- data/doc/fr_method_index.html +9 -8
- data/frivol.gemspec +5 -7
- data/lib/frivol.rb +32 -8
- data/test/test_frivol.rb +44 -0
- metadata +7 -9
- data/doc/classes/Frivol/ClassMethods.src/M000007.html +0 -18
- data/doc/classes/Frivol/ClassMethods.src/M000008.html +0 -19
- data/doc/classes/Frivol/Config.src/M000009.html +0 -18
- data/doc/classes/Frivol/Config.src/M000010.html +0 -18
- data/doc/classes/Frivol/Config.src/M000011.html +0 -18
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/doc/classes/Frivol.html
CHANGED
@@ -84,10 +84,11 @@
|
|
84
84
|
<h3 class="section-bar">Methods</h3>
|
85
85
|
|
86
86
|
<div class="name-list">
|
87
|
+
<a href="#M000006">clear_storage</a>
|
87
88
|
<a href="#M000005">delete_storage</a>
|
88
|
-
<a href="#
|
89
|
+
<a href="#M000007">expire_storage</a>
|
89
90
|
<a href="#M000004">retrieve</a>
|
90
|
-
<a href="#
|
91
|
+
<a href="#M000008">storage_key</a>
|
91
92
|
<a href="#M000003">store</a>
|
92
93
|
</div>
|
93
94
|
</div>
|
@@ -135,6 +136,24 @@ Defines a constant to indicate that storage should never expire
|
|
135
136
|
<div id="methods">
|
136
137
|
<h3 class="section-bar">Public Instance methods</h3>
|
137
138
|
|
139
|
+
<div id="method-M000006" class="method-detail">
|
140
|
+
<a name="M000006"></a>
|
141
|
+
|
142
|
+
<div class="method-heading">
|
143
|
+
<a href="Frivol.src/M000006.html" target="Code" class="method-signature"
|
144
|
+
onclick="popupCode('Frivol.src/M000006.html');return false;">
|
145
|
+
<span class="method-name">clear_storage</span><span class="method-args">()</span>
|
146
|
+
</a>
|
147
|
+
</div>
|
148
|
+
|
149
|
+
<div class="method-description">
|
150
|
+
<p>
|
151
|
+
Clears the cached values and forces the next <a
|
152
|
+
href="Frivol.html#M000004">retrieve</a> to fetch from Redis.
|
153
|
+
</p>
|
154
|
+
</div>
|
155
|
+
</div>
|
156
|
+
|
138
157
|
<div id="method-M000005" class="method-detail">
|
139
158
|
<a name="M000005"></a>
|
140
159
|
|
@@ -147,17 +166,17 @@ Defines a constant to indicate that storage should never expire
|
|
147
166
|
|
148
167
|
<div class="method-description">
|
149
168
|
<p>
|
150
|
-
Deletes the stored values.
|
169
|
+
Deletes the stored values (and clears the cache).
|
151
170
|
</p>
|
152
171
|
</div>
|
153
172
|
</div>
|
154
173
|
|
155
|
-
<div id="method-
|
156
|
-
<a name="
|
174
|
+
<div id="method-M000007" class="method-detail">
|
175
|
+
<a name="M000007"></a>
|
157
176
|
|
158
177
|
<div class="method-heading">
|
159
|
-
<a href="Frivol.src/
|
160
|
-
onclick="popupCode('Frivol.src/
|
178
|
+
<a href="Frivol.src/M000007.html" target="Code" class="method-signature"
|
179
|
+
onclick="popupCode('Frivol.src/M000007.html');return false;">
|
161
180
|
<span class="method-name">expire_storage</span><span class="method-args">(time, bucket = nil)</span>
|
162
181
|
</a>
|
163
182
|
</div>
|
@@ -201,12 +220,12 @@ be the default.
|
|
201
220
|
</div>
|
202
221
|
</div>
|
203
222
|
|
204
|
-
<div id="method-
|
205
|
-
<a name="
|
223
|
+
<div id="method-M000008" class="method-detail">
|
224
|
+
<a name="M000008"></a>
|
206
225
|
|
207
226
|
<div class="method-heading">
|
208
|
-
<a href="Frivol.src/
|
209
|
-
onclick="popupCode('Frivol.src/
|
227
|
+
<a href="Frivol.src/M000008.html" target="Code" class="method-signature"
|
228
|
+
onclick="popupCode('Frivol.src/M000008.html');return false;">
|
210
229
|
<span class="method-name">storage_key</span><span class="method-args">(bucket = nil)</span>
|
211
230
|
</a>
|
212
231
|
</div>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 98</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">keys_and_values</span>)
|
15
15
|
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>)
|
16
16
|
<span class="ruby-identifier">keys_and_values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 115</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">retrieve</span>(<span class="ruby-identifier">keys_and_defaults</span>)
|
15
15
|
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>)
|
16
16
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">keys_and_defaults</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">default</span><span class="ruby-operator">|</span>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 125</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_storage</span>
|
15
15
|
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">delete_hash</span> <span class="ruby-keyword kw">self</span>
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>clear_storage (Frivol)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">redis</span>.<span class="ruby-identifier">expire</span> <span class="ruby-identifier">storage_key</span>(<span class="ruby-identifier">bucket</span>), <span class="ruby-identifier">time</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 130</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_storage</span>
|
15
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">clear_hash</span> <span class="ruby-keyword kw">self</span>
|
17
16
|
<span class="ruby-keyword kw">end</span></pre>
|
18
17
|
</body>
|
19
18
|
</html>
|
@@ -5,15 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>expire_storage (Frivol)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 135</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expire_storage</span>(<span class="ruby-identifier">time</span>, <span class="ruby-identifier">bucket</span> = <span class="ruby-keyword kw">nil</span>)
|
15
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">nil?</span>
|
16
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">redis</span>.<span class="ruby-identifier">expire</span> <span class="ruby-identifier">storage_key</span>(<span class="ruby-identifier">bucket</span>), <span class="ruby-identifier">time</span>
|
17
17
|
<span class="ruby-keyword kw">end</span></pre>
|
18
18
|
</body>
|
19
19
|
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>storage_key (Frivol)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 148</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_key</span>(<span class="ruby-identifier">bucket</span> = <span class="ruby-keyword kw">nil</span>)
|
15
|
+
<span class="ruby-ivar">@frivol_key</span> <span class="ruby-operator">||=</span> <span class="ruby-node">"#{self.class.name}-#{id}"</span>
|
16
|
+
<span class="ruby-identifier">bucket</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-ivar">@frivol_key</span> <span class="ruby-operator">:</span> <span class="ruby-node">"#{@frivol_key}-#{bucket}"</span>
|
17
|
+
<span class="ruby-keyword kw">end</span></pre>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -88,9 +88,9 @@ href="../Frivol.html">Frivol</a> is included in the class.
|
|
88
88
|
<h3 class="section-bar">Methods</h3>
|
89
89
|
|
90
90
|
<div class="name-list">
|
91
|
-
<a href="#
|
92
|
-
<a href="#
|
93
|
-
<a href="#
|
91
|
+
<a href="#M000011">storage_bucket</a>
|
92
|
+
<a href="#M000009">storage_expires_in</a>
|
93
|
+
<a href="#M000010">storage_expiry</a>
|
94
94
|
</div>
|
95
95
|
</div>
|
96
96
|
|
@@ -112,12 +112,12 @@ href="../Frivol.html">Frivol</a> is included in the class.
|
|
112
112
|
<div id="methods">
|
113
113
|
<h3 class="section-bar">Public Instance methods</h3>
|
114
114
|
|
115
|
-
<div id="method-
|
116
|
-
<a name="
|
115
|
+
<div id="method-M000011" class="method-detail">
|
116
|
+
<a name="M000011"></a>
|
117
117
|
|
118
118
|
<div class="method-heading">
|
119
|
-
<a href="ClassMethods.src/
|
120
|
-
onclick="popupCode('ClassMethods.src/
|
119
|
+
<a href="ClassMethods.src/M000011.html" target="Code" class="method-signature"
|
120
|
+
onclick="popupCode('ClassMethods.src/M000011.html');return false;">
|
121
121
|
<span class="method-name">storage_bucket</span><span class="method-args">(bucket, options = {})</span>
|
122
122
|
</a>
|
123
123
|
</div>
|
@@ -163,12 +163,12 @@ Options are :expires_in which sets the expiry time for a bucket, and
|
|
163
163
|
</div>
|
164
164
|
</div>
|
165
165
|
|
166
|
-
<div id="method-
|
167
|
-
<a name="
|
166
|
+
<div id="method-M000009" class="method-detail">
|
167
|
+
<a name="M000009"></a>
|
168
168
|
|
169
169
|
<div class="method-heading">
|
170
|
-
<a href="ClassMethods.src/
|
171
|
-
onclick="popupCode('ClassMethods.src/
|
170
|
+
<a href="ClassMethods.src/M000009.html" target="Code" class="method-signature"
|
171
|
+
onclick="popupCode('ClassMethods.src/M000009.html');return false;">
|
172
172
|
<span class="method-name">storage_expires_in</span><span class="method-args">(time, bucket = nil)</span>
|
173
173
|
</a>
|
174
174
|
</div>
|
@@ -181,12 +181,12 @@ passed.
|
|
181
181
|
</div>
|
182
182
|
</div>
|
183
183
|
|
184
|
-
<div id="method-
|
185
|
-
<a name="
|
184
|
+
<div id="method-M000010" class="method-detail">
|
185
|
+
<a name="M000010"></a>
|
186
186
|
|
187
187
|
<div class="method-heading">
|
188
|
-
<a href="ClassMethods.src/
|
189
|
-
onclick="popupCode('ClassMethods.src/
|
188
|
+
<a href="ClassMethods.src/M000010.html" target="Code" class="method-signature"
|
189
|
+
onclick="popupCode('ClassMethods.src/M000010.html');return false;">
|
190
190
|
<span class="method-name">storage_expiry</span><span class="method-args">(bucket = nil)</span>
|
191
191
|
</a>
|
192
192
|
</div>
|
@@ -5,15 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>storage_expires_in (Frivol::ClassMethods)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 262</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_expires_in</span>(<span class="ruby-identifier">time</span>, <span class="ruby-identifier">bucket</span> = <span class="ruby-keyword kw">nil</span>)
|
15
15
|
<span class="ruby-ivar">@frivol_storage_expiry</span> <span class="ruby-operator">||=</span> {}
|
16
|
-
<span class="ruby-ivar">@frivol_storage_expiry</span
|
16
|
+
<span class="ruby-ivar">@frivol_storage_expiry</span>[<span class="ruby-identifier">bucket</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">time</span>
|
17
17
|
<span class="ruby-keyword kw">end</span></pre>
|
18
18
|
</body>
|
19
19
|
</html>
|
@@ -5,49 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>storage_expiry (Frivol::ClassMethods)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-identifier">
|
17
|
-
<span class="ruby-identifier">is_counter</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:counter</span>]
|
18
|
-
|
19
|
-
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class_eval</span> <span class="ruby-keyword kw">do</span>
|
20
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_counter</span>
|
21
|
-
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"store_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
22
|
-
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">store_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>, <span class="ruby-identifier">value</span>)
|
23
|
-
<span class="ruby-keyword kw">end</span>
|
24
|
-
|
25
|
-
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"retrieve_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">default</span><span class="ruby-operator">|</span>
|
26
|
-
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>, <span class="ruby-identifier">default</span>)
|
27
|
-
<span class="ruby-keyword kw">end</span>
|
28
|
-
|
29
|
-
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"increment_#{bucket}"</span> <span class="ruby-keyword kw">do</span>
|
30
|
-
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">increment_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
31
|
-
<span class="ruby-keyword kw">end</span>
|
32
|
-
<span class="ruby-keyword kw">else</span>
|
33
|
-
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"store_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keys_and_values</span><span class="ruby-operator">|</span>
|
34
|
-
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
35
|
-
<span class="ruby-identifier">keys_and_values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
36
|
-
<span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">value</span>
|
37
|
-
<span class="ruby-keyword kw">end</span>
|
38
|
-
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">store_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">hash</span>, <span class="ruby-identifier">bucket</span>)
|
39
|
-
<span class="ruby-keyword kw">end</span>
|
40
|
-
|
41
|
-
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"retrieve_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keys_and_defaults</span><span class="ruby-operator">|</span>
|
42
|
-
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
43
|
-
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">keys_and_defaults</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">default</span><span class="ruby-operator">|</span>
|
44
|
-
<span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">default</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">default</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">send</span>(<span class="ruby-identifier">default</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">default</span>
|
45
|
-
<span class="ruby-keyword kw">end</span>
|
46
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">first</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
47
|
-
<span class="ruby-identifier">result</span>
|
48
|
-
<span class="ruby-keyword kw">end</span>
|
49
|
-
<span class="ruby-keyword kw">end</span>
|
50
|
-
<span class="ruby-keyword kw">end</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 268</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_expiry</span>(<span class="ruby-identifier">bucket</span> = <span class="ruby-keyword kw">nil</span>)
|
15
|
+
<span class="ruby-ivar">@frivol_storage_expiry</span> <span class="ruby-operator">||=</span> {}
|
16
|
+
<span class="ruby-ivar">@frivol_storage_expiry</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">bucket</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@frivol_storage_expiry</span>[<span class="ruby-identifier">bucket</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">:</span> <span class="ruby-constant">NEVER_EXPIRE</span>
|
51
17
|
<span class="ruby-keyword kw">end</span></pre>
|
52
18
|
</body>
|
53
19
|
</html>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>storage_bucket (Frivol::ClassMethods)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 292</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_bucket</span>(<span class="ruby-identifier">bucket</span>, <span class="ruby-identifier">options</span> = {})
|
15
|
+
<span class="ruby-identifier">time</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:expires_in</span>]
|
16
|
+
<span class="ruby-identifier">storage_expires_in</span>(<span class="ruby-identifier">time</span>, <span class="ruby-identifier">bucket</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">time</span>.<span class="ruby-identifier">nil?</span>
|
17
|
+
<span class="ruby-identifier">is_counter</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:counter</span>]
|
18
|
+
|
19
|
+
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class_eval</span> <span class="ruby-keyword kw">do</span>
|
20
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_counter</span>
|
21
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"store_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
22
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">store_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>, <span class="ruby-identifier">value</span>)
|
23
|
+
<span class="ruby-keyword kw">end</span>
|
24
|
+
|
25
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"retrieve_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">default</span><span class="ruby-operator">|</span>
|
26
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>, <span class="ruby-identifier">default</span>)
|
27
|
+
<span class="ruby-keyword kw">end</span>
|
28
|
+
|
29
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"increment_#{bucket}"</span> <span class="ruby-keyword kw">do</span>
|
30
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">increment_counter</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
31
|
+
<span class="ruby-keyword kw">end</span>
|
32
|
+
<span class="ruby-keyword kw">else</span>
|
33
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"store_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keys_and_values</span><span class="ruby-operator">|</span>
|
34
|
+
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
35
|
+
<span class="ruby-identifier">keys_and_values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
36
|
+
<span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">value</span>
|
37
|
+
<span class="ruby-keyword kw">end</span>
|
38
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">store_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">hash</span>, <span class="ruby-identifier">bucket</span>)
|
39
|
+
<span class="ruby-keyword kw">end</span>
|
40
|
+
|
41
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"retrieve_#{bucket}"</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keys_and_defaults</span><span class="ruby-operator">|</span>
|
42
|
+
<span class="ruby-identifier">hash</span> = <span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">retrieve_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
43
|
+
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">keys_and_defaults</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">default</span><span class="ruby-operator">|</span>
|
44
|
+
<span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">default</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">default</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">send</span>(<span class="ruby-identifier">default</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">default</span>
|
45
|
+
<span class="ruby-keyword kw">end</span>
|
46
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">first</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
47
|
+
<span class="ruby-identifier">result</span>
|
48
|
+
<span class="ruby-keyword kw">end</span>
|
49
|
+
<span class="ruby-keyword kw">end</span>
|
50
|
+
|
51
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"delete_#{bucket}"</span> <span class="ruby-keyword kw">do</span>
|
52
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">delete_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
53
|
+
<span class="ruby-keyword kw">end</span>
|
54
|
+
|
55
|
+
<span class="ruby-identifier">define_method</span> <span class="ruby-node">"clear_#{bucket}"</span> <span class="ruby-keyword kw">do</span>
|
56
|
+
<span class="ruby-constant">Frivol</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">clear_hash</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">bucket</span>)
|
57
|
+
<span class="ruby-keyword kw">end</span>
|
58
|
+
<span class="ruby-keyword kw">end</span>
|
59
|
+
<span class="ruby-keyword kw">end</span></pre>
|
60
|
+
</body>
|
61
|
+
</html>
|
@@ -90,9 +90,9 @@ with an optional storage expiry parameter
|
|
90
90
|
<h3 class="section-bar">Methods</h3>
|
91
91
|
|
92
92
|
<div class="name-list">
|
93
|
-
<a href="#
|
94
|
-
<a href="#
|
95
|
-
<a href="#
|
93
|
+
<a href="#M000014">include_in</a>
|
94
|
+
<a href="#M000013">redis</a>
|
95
|
+
<a href="#M000012">redis_config=</a>
|
96
96
|
</div>
|
97
97
|
</div>
|
98
98
|
|
@@ -114,12 +114,12 @@ with an optional storage expiry parameter
|
|
114
114
|
<div id="methods">
|
115
115
|
<h3 class="section-bar">Public Class methods</h3>
|
116
116
|
|
117
|
-
<div id="method-
|
118
|
-
<a name="
|
117
|
+
<div id="method-M000014" class="method-detail">
|
118
|
+
<a name="M000014"></a>
|
119
119
|
|
120
120
|
<div class="method-heading">
|
121
|
-
<a href="Config.src/
|
122
|
-
onclick="popupCode('Config.src/
|
121
|
+
<a href="Config.src/M000014.html" target="Code" class="method-signature"
|
122
|
+
onclick="popupCode('Config.src/M000014.html');return false;">
|
123
123
|
<span class="method-name">include_in</span><span class="method-args">(host_class, storage_expires_in = nil)</span>
|
124
124
|
</a>
|
125
125
|
</div>
|
@@ -143,12 +143,12 @@ ActiveRecord::Base and set the default storage expiry to 10 minutes
|
|
143
143
|
</div>
|
144
144
|
</div>
|
145
145
|
|
146
|
-
<div id="method-
|
147
|
-
<a name="
|
146
|
+
<div id="method-M000013" class="method-detail">
|
147
|
+
<a name="M000013"></a>
|
148
148
|
|
149
149
|
<div class="method-heading">
|
150
|
-
<a href="Config.src/
|
151
|
-
onclick="popupCode('Config.src/
|
150
|
+
<a href="Config.src/M000013.html" target="Code" class="method-signature"
|
151
|
+
onclick="popupCode('Config.src/M000013.html');return false;">
|
152
152
|
<span class="method-name">redis</span><span class="method-args">()</span>
|
153
153
|
</a>
|
154
154
|
</div>
|
@@ -160,12 +160,12 @@ Returns the configured Redis instance
|
|
160
160
|
</div>
|
161
161
|
</div>
|
162
162
|
|
163
|
-
<div id="method-
|
164
|
-
<a name="
|
163
|
+
<div id="method-M000012" class="method-detail">
|
164
|
+
<a name="M000012"></a>
|
165
165
|
|
166
166
|
<div class="method-heading">
|
167
|
-
<a href="Config.src/
|
168
|
-
onclick="popupCode('Config.src/
|
167
|
+
<a href="Config.src/M000012.html" target="Code" class="method-signature"
|
168
|
+
onclick="popupCode('Config.src/M000012.html');return false;">
|
169
169
|
<span class="method-name">redis_config=</span><span class="method-args">(config)</span>
|
170
170
|
</a>
|
171
171
|
</div>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>redis_config= (Frivol::Config)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-ivar">@@redis</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 165</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis_config=</span>(<span class="ruby-identifier">config</span>)
|
15
|
+
<span class="ruby-ivar">@@redis</span> = <span class="ruby-constant">Redis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>)
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>redis (Frivol::Config)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-identifier">host_class</span>.<span class="ruby-identifier">storage_expires_in</span> <span class="ruby-identifier">storage_expires_in</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">storage_expires_in</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 170</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis</span>
|
15
|
+
<span class="ruby-ivar">@@redis</span>
|
17
16
|
<span class="ruby-keyword kw">end</span></pre>
|
18
17
|
</body>
|
19
18
|
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>include_in (Frivol::Config)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 180</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">include_in</span>(<span class="ruby-identifier">host_class</span>, <span class="ruby-identifier">storage_expires_in</span> = <span class="ruby-keyword kw">nil</span>)
|
15
|
+
<span class="ruby-identifier">host_class</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">:include</span>, <span class="ruby-constant">Frivol</span>)
|
16
|
+
<span class="ruby-identifier">host_class</span>.<span class="ruby-identifier">storage_expires_in</span> <span class="ruby-identifier">storage_expires_in</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">storage_expires_in</span>
|
17
|
+
<span class="ruby-keyword kw">end</span></pre>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 354</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_json</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)
|
15
15
|
{
|
16
16
|
<span class="ruby-value str">'json_class'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">name</span>,
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 362</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">json_create</span>(<span class="ruby-identifier">o</span>)
|
15
15
|
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">o</span>[<span class="ruby-value str">'data'</span>])
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
data/doc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Fri,
|
1
|
+
Fri, 22 Oct 2010 14:38:28 +0200
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>Fri Oct
|
59
|
+
<td>Fri Oct 22 14:36:50 +0200 2010</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -118,7 +118,9 @@ The <tt>expire_storage(time)</tt> method can be used to set the expiry time
|
|
118
118
|
in seconds of the temporary storage. The default is not to expire the
|
119
119
|
storage, in which case it will live for as long as Redis keeps it.
|
120
120
|
<tt>delete_storage</tt>, as the name suggests will immediately delete the
|
121
|
-
storage
|
121
|
+
storage, while <tt>clear_storage</tt> will clear the cache that <a
|
122
|
+
href="../../classes/Frivol.html">Frivol</a> keeps and force the next
|
123
|
+
<tt>retrieve</tt> to return to Redis for the data.
|
122
124
|
</p>
|
123
125
|
<p>
|
124
126
|
Since version 0.1.5 <a href="../../classes/Frivol.html">Frivol</a> can
|
data/doc/fr_method_index.html
CHANGED
@@ -20,17 +20,18 @@
|
|
20
20
|
<div id="index">
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
22
22
|
<div id="index-entries">
|
23
|
+
<a href="classes/Frivol.html#M000006">clear_storage (Frivol)</a><br />
|
23
24
|
<a href="classes/Frivol.html#M000005">delete_storage (Frivol)</a><br />
|
24
|
-
<a href="classes/Frivol.html#
|
25
|
-
<a href="classes/Frivol/Config.html#
|
25
|
+
<a href="classes/Frivol.html#M000007">expire_storage (Frivol)</a><br />
|
26
|
+
<a href="classes/Frivol/Config.html#M000014">include_in (Frivol::Config)</a><br />
|
26
27
|
<a href="classes/Time.html#M000002">json_create (Time)</a><br />
|
27
|
-
<a href="classes/Frivol/Config.html#
|
28
|
-
<a href="classes/Frivol/Config.html#
|
28
|
+
<a href="classes/Frivol/Config.html#M000013">redis (Frivol::Config)</a><br />
|
29
|
+
<a href="classes/Frivol/Config.html#M000012">redis_config= (Frivol::Config)</a><br />
|
29
30
|
<a href="classes/Frivol.html#M000004">retrieve (Frivol)</a><br />
|
30
|
-
<a href="classes/Frivol/ClassMethods.html#
|
31
|
-
<a href="classes/Frivol/ClassMethods.html#
|
32
|
-
<a href="classes/Frivol/ClassMethods.html#
|
33
|
-
<a href="classes/Frivol.html#
|
31
|
+
<a href="classes/Frivol/ClassMethods.html#M000011">storage_bucket (Frivol::ClassMethods)</a><br />
|
32
|
+
<a href="classes/Frivol/ClassMethods.html#M000009">storage_expires_in (Frivol::ClassMethods)</a><br />
|
33
|
+
<a href="classes/Frivol/ClassMethods.html#M000010">storage_expiry (Frivol::ClassMethods)</a><br />
|
34
|
+
<a href="classes/Frivol.html#M000008">storage_key (Frivol)</a><br />
|
34
35
|
<a href="classes/Frivol.html#M000003">store (Frivol)</a><br />
|
35
36
|
<a href="classes/Time.html#M000001">to_json (Time)</a><br />
|
36
37
|
</div>
|
data/frivol.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{frivol}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marc Heiligers"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-22}
|
13
13
|
s.description = %q{Simple Redis backed temporary storage intended primarily for use with ActiveRecord models to provide caching}
|
14
14
|
s.email = %q{marc@eternal.co.za}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,17 +29,15 @@ Gem::Specification.new do |s|
|
|
29
29
|
"doc/classes/Frivol.src/M000005.html",
|
30
30
|
"doc/classes/Frivol.src/M000006.html",
|
31
31
|
"doc/classes/Frivol.src/M000007.html",
|
32
|
+
"doc/classes/Frivol.src/M000008.html",
|
32
33
|
"doc/classes/Frivol/ClassMethods.html",
|
33
|
-
"doc/classes/Frivol/ClassMethods.src/M000007.html",
|
34
|
-
"doc/classes/Frivol/ClassMethods.src/M000008.html",
|
35
34
|
"doc/classes/Frivol/ClassMethods.src/M000009.html",
|
36
35
|
"doc/classes/Frivol/ClassMethods.src/M000010.html",
|
36
|
+
"doc/classes/Frivol/ClassMethods.src/M000011.html",
|
37
37
|
"doc/classes/Frivol/Config.html",
|
38
|
-
"doc/classes/Frivol/Config.src/M000009.html",
|
39
|
-
"doc/classes/Frivol/Config.src/M000010.html",
|
40
|
-
"doc/classes/Frivol/Config.src/M000011.html",
|
41
38
|
"doc/classes/Frivol/Config.src/M000012.html",
|
42
39
|
"doc/classes/Frivol/Config.src/M000013.html",
|
40
|
+
"doc/classes/Frivol/Config.src/M000014.html",
|
43
41
|
"doc/classes/Time.html",
|
44
42
|
"doc/classes/Time.src/M000001.html",
|
45
43
|
"doc/classes/Time.src/M000002.html",
|
data/lib/frivol.rb
CHANGED
@@ -27,7 +27,8 @@
|
|
27
27
|
#
|
28
28
|
# The <tt>expire_storage(time)</tt> method can be used to set the expiry time in seconds of the temporary storage.
|
29
29
|
# The default is not to expire the storage, in which case it will live for as long as Redis keeps it.
|
30
|
-
# <tt>delete_storage</tt>, as the name suggests will immediately delete the storage
|
30
|
+
# <tt>delete_storage</tt>, as the name suggests will immediately delete the storage, while <tt>clear_storage</tt>
|
31
|
+
# will clear the cache that Frivol keeps and force the next <tt>retrieve</tt> to return to Redis for the data.
|
31
32
|
#
|
32
33
|
# Since version 0.1.5 Frivol can create different storage buckets. Note that this introduces a breaking change
|
33
34
|
# to the <tt>storage_key</tt> method if you have overriden it. It now takes a +bucket+ parameter.
|
@@ -120,11 +121,16 @@ module Frivol
|
|
120
121
|
result
|
121
122
|
end
|
122
123
|
|
123
|
-
# Deletes the stored values.
|
124
|
+
# Deletes the stored values (and clears the cache).
|
124
125
|
def delete_storage
|
125
126
|
Frivol::Helpers.delete_hash self
|
126
127
|
end
|
127
128
|
|
129
|
+
# Clears the cached values and forces the next retrieve to fetch from Redis.
|
130
|
+
def clear_storage
|
131
|
+
Frivol::Helpers.clear_hash self
|
132
|
+
end
|
133
|
+
|
128
134
|
# Expire the stored data in +time+ seconds.
|
129
135
|
def expire_storage(time, bucket = nil)
|
130
136
|
return if time.nil?
|
@@ -179,7 +185,7 @@ module Frivol
|
|
179
185
|
|
180
186
|
module Helpers #:nodoc:
|
181
187
|
def self.store_hash(instance, hash, bucket = nil)
|
182
|
-
data, is_new =
|
188
|
+
data, is_new = get_data_and_is_new instance
|
183
189
|
data[bucket.to_s] = hash
|
184
190
|
|
185
191
|
key = instance.send(:storage_key, bucket)
|
@@ -190,39 +196,49 @@ module Frivol
|
|
190
196
|
Frivol::Config.redis.expire(key, time) if time != Frivol::NEVER_EXPIRE
|
191
197
|
is_new[bucket.to_s] = false
|
192
198
|
end
|
199
|
+
|
200
|
+
self.set_data_and_is_new instance, data, is_new
|
193
201
|
end
|
194
202
|
|
195
203
|
def self.retrieve_hash(instance, bucket = nil)
|
196
|
-
data, is_new =
|
204
|
+
data, is_new = get_data_and_is_new instance
|
197
205
|
return data[bucket.to_s] if data.key?(bucket.to_s)
|
198
206
|
key = instance.send(:storage_key, bucket)
|
199
207
|
json = Frivol::Config.redis[key]
|
200
208
|
|
201
209
|
is_new[bucket.to_s] = json.nil?
|
202
|
-
instance.instance_variable_set :@frivol_is_new, is_new
|
203
210
|
|
204
211
|
hash = json.nil? ? {} : JSON.parse(json)
|
205
212
|
data[bucket.to_s] = hash
|
206
|
-
instance.instance_variable_set :@frivol_data, data
|
207
213
|
|
214
|
+
self.set_data_and_is_new instance, data, is_new
|
208
215
|
hash
|
209
216
|
end
|
210
217
|
|
211
218
|
def self.delete_hash(instance, bucket = nil)
|
212
219
|
key = instance.send(:storage_key, bucket)
|
213
220
|
Frivol::Config.redis.del key
|
214
|
-
|
221
|
+
clear_hash(instance, bucket)
|
222
|
+
end
|
223
|
+
|
224
|
+
def self.clear_hash(instance, bucket = nil)
|
225
|
+
key = instance.send(:storage_key, bucket)
|
215
226
|
data = instance.instance_variable_defined?(:@frivol_data) ? instance.instance_variable_get(:@frivol_data) : {}
|
216
227
|
data.delete(bucket.to_s)
|
217
228
|
instance.instance_variable_set :@frivol_data, data
|
218
229
|
end
|
219
230
|
|
220
|
-
def self.
|
231
|
+
def self.get_data_and_is_new(instance)
|
221
232
|
data = instance.instance_variable_defined?(:@frivol_data) ? instance.instance_variable_get(:@frivol_data) : {}
|
222
233
|
is_new = instance.instance_variable_defined?(:@frivol_is_new) ? instance.instance_variable_get(:@frivol_is_new) : {}
|
223
234
|
[data, is_new]
|
224
235
|
end
|
225
236
|
|
237
|
+
def self.set_data_and_is_new(instance, data, is_new)
|
238
|
+
instance.instance_variable_set :@frivol_data, data
|
239
|
+
instance.instance_variable_set :@frivol_is_new, is_new
|
240
|
+
end
|
241
|
+
|
226
242
|
def self.store_counter(instance, counter, value)
|
227
243
|
key = instance.send(:storage_key, counter)
|
228
244
|
Frivol::Config.redis[key] = value
|
@@ -309,6 +325,14 @@ module Frivol
|
|
309
325
|
result
|
310
326
|
end
|
311
327
|
end
|
328
|
+
|
329
|
+
define_method "delete_#{bucket}" do
|
330
|
+
Frivol::Helpers.delete_hash(self, bucket)
|
331
|
+
end
|
332
|
+
|
333
|
+
define_method "clear_#{bucket}" do
|
334
|
+
Frivol::Helpers.clear_hash(self, bucket)
|
335
|
+
end
|
312
336
|
end
|
313
337
|
end
|
314
338
|
|
data/test/test_frivol.rb
CHANGED
@@ -4,6 +4,7 @@ class TestFrivol < Test::Unit::TestCase
|
|
4
4
|
def setup
|
5
5
|
# fake_redis # Comment out this line to test against a real live Redis
|
6
6
|
Frivol::Config.redis_config = { :thread_safe => true } # This will connect to a default Redis setup, otherwise set to { :host => "localhost", :port => 6379 }, for example
|
7
|
+
Frivol::Config.redis.flushdb
|
7
8
|
end
|
8
9
|
|
9
10
|
def teardown
|
@@ -258,6 +259,7 @@ class TestFrivol < Test::Unit::TestCase
|
|
258
259
|
assert_equal 11, t.load_blue
|
259
260
|
end
|
260
261
|
|
262
|
+
# Note: this test will fail from time to time using fake_redis because fake_redis is not thread safe
|
261
263
|
should "have thread safe counters" do
|
262
264
|
class ThreadCounterTestClass < TestClass
|
263
265
|
storage_bucket :blue, :counter => true
|
@@ -288,4 +290,46 @@ class TestFrivol < Test::Unit::TestCase
|
|
288
290
|
|
289
291
|
assert_equal 1010, t.load_blue
|
290
292
|
end
|
293
|
+
|
294
|
+
should "be able to delete storage for a bucket" do
|
295
|
+
class DeleteBucketTestClass < TestClass
|
296
|
+
storage_bucket :silver
|
297
|
+
|
298
|
+
def save_silver
|
299
|
+
store_silver :value => "value"
|
300
|
+
end
|
301
|
+
|
302
|
+
def load_silver
|
303
|
+
retrieve_silver :value => "default"
|
304
|
+
end
|
305
|
+
end
|
306
|
+
t = DeleteBucketTestClass.new
|
307
|
+
t.save_silver
|
308
|
+
assert_equal "value", t.load_silver
|
309
|
+
t.delete_silver
|
310
|
+
assert_equal "default", t.load_silver
|
311
|
+
end
|
312
|
+
|
313
|
+
should "be able to clear cached storage for a bucket" do
|
314
|
+
class ClearBucketTestClass < TestClass
|
315
|
+
storage_bucket :gold
|
316
|
+
|
317
|
+
def save_gold
|
318
|
+
store_gold :value => "value"
|
319
|
+
end
|
320
|
+
|
321
|
+
def load_gold
|
322
|
+
retrieve_gold :value => "default"
|
323
|
+
end
|
324
|
+
end
|
325
|
+
t = ClearBucketTestClass.new
|
326
|
+
t.save_gold
|
327
|
+
assert_equal "value", t.load_gold
|
328
|
+
t.clear_gold
|
329
|
+
# ensure we're getting the result from Redis and not the cache
|
330
|
+
Frivol::Config.redis.expects(:[]).with(t.storage_key(:gold)).once.returns({ :value => "value" }.to_json)
|
331
|
+
assert_equal "value", t.load_gold
|
332
|
+
end
|
333
|
+
|
334
|
+
|
291
335
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frivol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marc Heiligers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-22 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -88,17 +88,15 @@ files:
|
|
88
88
|
- doc/classes/Frivol.src/M000005.html
|
89
89
|
- doc/classes/Frivol.src/M000006.html
|
90
90
|
- doc/classes/Frivol.src/M000007.html
|
91
|
+
- doc/classes/Frivol.src/M000008.html
|
91
92
|
- doc/classes/Frivol/ClassMethods.html
|
92
|
-
- doc/classes/Frivol/ClassMethods.src/M000007.html
|
93
|
-
- doc/classes/Frivol/ClassMethods.src/M000008.html
|
94
93
|
- doc/classes/Frivol/ClassMethods.src/M000009.html
|
95
94
|
- doc/classes/Frivol/ClassMethods.src/M000010.html
|
95
|
+
- doc/classes/Frivol/ClassMethods.src/M000011.html
|
96
96
|
- doc/classes/Frivol/Config.html
|
97
|
-
- doc/classes/Frivol/Config.src/M000009.html
|
98
|
-
- doc/classes/Frivol/Config.src/M000010.html
|
99
|
-
- doc/classes/Frivol/Config.src/M000011.html
|
100
97
|
- doc/classes/Frivol/Config.src/M000012.html
|
101
98
|
- doc/classes/Frivol/Config.src/M000013.html
|
99
|
+
- doc/classes/Frivol/Config.src/M000014.html
|
102
100
|
- doc/classes/Time.html
|
103
101
|
- doc/classes/Time.src/M000001.html
|
104
102
|
- doc/classes/Time.src/M000002.html
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>storage_expires_in (Frivol::ClassMethods)</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
-
</head>
|
12
|
-
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 169</span>
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_expires_in</span>(<span class="ruby-identifier">time</span>)
|
15
|
-
<span class="ruby-ivar">@frivol_storage_expiry</span> = <span class="ruby-identifier">time</span>
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
17
|
-
</body>
|
18
|
-
</html>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>storage_expires_in (Frivol::ClassMethods)</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
-
</head>
|
12
|
-
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 246</span>
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">storage_expires_in</span>(<span class="ruby-identifier">time</span>, <span class="ruby-identifier">bucket</span> = <span class="ruby-keyword kw">nil</span>)
|
15
|
-
<span class="ruby-ivar">@frivol_storage_expiry</span> <span class="ruby-operator">||=</span> {}
|
16
|
-
<span class="ruby-ivar">@frivol_storage_expiry</span>[<span class="ruby-identifier">bucket</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">time</span>
|
17
|
-
<span class="ruby-keyword kw">end</span></pre>
|
18
|
-
</body>
|
19
|
-
</html>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>redis_config= (Frivol::Config)</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
-
</head>
|
12
|
-
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 121</span>
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis_config=</span>(<span class="ruby-identifier">config</span>)
|
15
|
-
<span class="ruby-ivar">@@redis</span> = <span class="ruby-constant">Redis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>)
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
17
|
-
</body>
|
18
|
-
</html>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>redis (Frivol::Config)</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
-
</head>
|
12
|
-
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 126</span>
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis</span>
|
15
|
-
<span class="ruby-ivar">@@redis</span>
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
17
|
-
</body>
|
18
|
-
</html>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>redis_config= (Frivol::Config)</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
-
</head>
|
12
|
-
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/frivol.rb, line 159</span>
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis_config=</span>(<span class="ruby-identifier">config</span>)
|
15
|
-
<span class="ruby-ivar">@@redis</span> = <span class="ruby-constant">Redis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>)
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
17
|
-
</body>
|
18
|
-
</html>
|