frivol 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/doc/classes/Frivol.html +38 -70
- data/doc/classes/Frivol.src/M000003.html +4 -4
- data/doc/classes/Frivol.src/M000004.html +3 -3
- data/doc/classes/Frivol.src/M000005.html +4 -5
- data/doc/classes/Frivol.src/M000006.html +5 -4
- data/doc/classes/Frivol.src/M000007.html +19 -0
- data/doc/classes/Frivol/ClassMethods.html +62 -26
- data/doc/classes/Frivol/ClassMethods.src/M000008.html +5 -4
- data/doc/classes/Frivol/ClassMethods.src/M000009.html +19 -0
- data/doc/classes/Frivol/ClassMethods.src/M000010.html +53 -0
- data/doc/classes/Frivol/Config.html +15 -43
- data/doc/classes/Frivol/Config.src/M000011.html +4 -5
- data/doc/classes/Frivol/Config.src/M000012.html +18 -0
- data/doc/classes/Frivol/Config.src/M000013.html +19 -0
- data/doc/classes/Time.html +4 -25
- 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 +35 -6
- data/doc/fr_method_index.html +4 -3
- data/doc/index.html +2 -2
- data/frivol.gemspec +10 -5
- data/lib/frivol.rb +152 -32
- data/test/fake_redis.rb +5 -1
- data/test/test_frivol.rb +137 -5
- metadata +13 -8
@@ -0,0 +1,53 @@
|
|
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 276</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
|
+
<span class="ruby-keyword kw">end</span>
|
51
|
+
<span class="ruby-keyword kw">end</span></pre>
|
52
|
+
</body>
|
53
|
+
</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="#M000013">include_in</a>
|
94
|
+
<a href="#M000012">redis</a>
|
95
|
+
<a href="#M000011">redis_config=</a>
|
96
96
|
</div>
|
97
97
|
</div>
|
98
98
|
|
@@ -114,11 +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-M000013" class="method-detail">
|
118
|
+
<a name="M000013"></a>
|
119
119
|
|
120
120
|
<div class="method-heading">
|
121
|
-
<a href="
|
121
|
+
<a href="Config.src/M000013.html" target="Code" class="method-signature"
|
122
|
+
onclick="popupCode('Config.src/M000013.html');return false;">
|
122
123
|
<span class="method-name">include_in</span><span class="method-args">(host_class, storage_expires_in = nil)</span>
|
123
124
|
</a>
|
124
125
|
</div>
|
@@ -139,25 +140,15 @@ For example, you might have the following in environment.rb:
|
|
139
140
|
Which would include <a href="../Frivol.html">Frivol</a> in
|
140
141
|
ActiveRecord::Base and set the default storage expiry to 10 minutes
|
141
142
|
</p>
|
142
|
-
<p><a class="source-toggle" href="#"
|
143
|
-
onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
|
144
|
-
<div class="method-source-code" id="M000012-source">
|
145
|
-
<pre>
|
146
|
-
<span class="ruby-comment cmt"># File lib/frivol.rb, line 151</span>
|
147
|
-
<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>)
|
148
|
-
<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>)
|
149
|
-
<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>
|
150
|
-
<span class="ruby-keyword kw">end</span>
|
151
|
-
</pre>
|
152
|
-
</div>
|
153
143
|
</div>
|
154
144
|
</div>
|
155
145
|
|
156
|
-
<div id="method-
|
157
|
-
<a name="
|
146
|
+
<div id="method-M000012" class="method-detail">
|
147
|
+
<a name="M000012"></a>
|
158
148
|
|
159
149
|
<div class="method-heading">
|
160
|
-
<a href="
|
150
|
+
<a href="Config.src/M000012.html" target="Code" class="method-signature"
|
151
|
+
onclick="popupCode('Config.src/M000012.html');return false;">
|
161
152
|
<span class="method-name">redis</span><span class="method-args">()</span>
|
162
153
|
</a>
|
163
154
|
</div>
|
@@ -166,24 +157,15 @@ ActiveRecord::Base and set the default storage expiry to 10 minutes
|
|
166
157
|
<p>
|
167
158
|
Returns the configured Redis instance
|
168
159
|
</p>
|
169
|
-
<p><a class="source-toggle" href="#"
|
170
|
-
onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
|
171
|
-
<div class="method-source-code" id="M000011-source">
|
172
|
-
<pre>
|
173
|
-
<span class="ruby-comment cmt"># File lib/frivol.rb, line 141</span>
|
174
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">redis</span>
|
175
|
-
<span class="ruby-ivar">@@redis</span>
|
176
|
-
<span class="ruby-keyword kw">end</span>
|
177
|
-
</pre>
|
178
|
-
</div>
|
179
160
|
</div>
|
180
161
|
</div>
|
181
162
|
|
182
|
-
<div id="method-
|
183
|
-
<a name="
|
163
|
+
<div id="method-M000011" class="method-detail">
|
164
|
+
<a name="M000011"></a>
|
184
165
|
|
185
166
|
<div class="method-heading">
|
186
|
-
<a href="
|
167
|
+
<a href="Config.src/M000011.html" target="Code" class="method-signature"
|
168
|
+
onclick="popupCode('Config.src/M000011.html');return false;">
|
187
169
|
<span class="method-name">redis_config=</span><span class="method-args">(config)</span>
|
188
170
|
</a>
|
189
171
|
</div>
|
@@ -202,16 +184,6 @@ Expects a hash such as
|
|
202
184
|
}
|
203
185
|
Frivol::Config.redis_config = REDIS_CONFIG
|
204
186
|
</pre>
|
205
|
-
<p><a class="source-toggle" href="#"
|
206
|
-
onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
|
207
|
-
<div class="method-source-code" id="M000010-source">
|
208
|
-
<pre>
|
209
|
-
<span class="ruby-comment cmt"># File lib/frivol.rb, line 136</span>
|
210
|
-
<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>)
|
211
|
-
<span class="ruby-ivar">@@redis</span> = <span class="ruby-constant">Redis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>)
|
212
|
-
<span class="ruby-keyword kw">end</span>
|
213
|
-
</pre>
|
214
|
-
</div>
|
215
187
|
</div>
|
216
188
|
</div>
|
217
189
|
|
@@ -5,15 +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-
|
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 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>)
|
17
16
|
<span class="ruby-keyword kw">end</span></pre>
|
18
17
|
</body>
|
19
18
|
</html>
|
@@ -0,0 +1,18 @@
|
|
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 164</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>
|
@@ -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 174</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>
|
data/doc/classes/Time.html
CHANGED
@@ -123,7 +123,8 @@ href="Time.html#M000001">to_json</a></tt> and deserialized by
|
|
123
123
|
<a name="M000002"></a>
|
124
124
|
|
125
125
|
<div class="method-heading">
|
126
|
-
<a href="
|
126
|
+
<a href="Time.src/M000002.html" target="Code" class="method-signature"
|
127
|
+
onclick="popupCode('Time.src/M000002.html');return false;">
|
127
128
|
<span class="method-name">json_create</span><span class="method-args">(o)</span>
|
128
129
|
</a>
|
129
130
|
</div>
|
@@ -132,16 +133,6 @@ href="Time.html#M000001">to_json</a></tt> and deserialized by
|
|
132
133
|
<p>
|
133
134
|
Deserialize from JSON
|
134
135
|
</p>
|
135
|
-
<p><a class="source-toggle" href="#"
|
136
|
-
onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
|
137
|
-
<div class="method-source-code" id="M000002-source">
|
138
|
-
<pre>
|
139
|
-
<span class="ruby-comment cmt"># File lib/frivol.rb, line 217</span>
|
140
|
-
<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>)
|
141
|
-
<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>])
|
142
|
-
<span class="ruby-keyword kw">end</span>
|
143
|
-
</pre>
|
144
|
-
</div>
|
145
136
|
</div>
|
146
137
|
</div>
|
147
138
|
|
@@ -151,7 +142,8 @@ Deserialize from JSON
|
|
151
142
|
<a name="M000001"></a>
|
152
143
|
|
153
144
|
<div class="method-heading">
|
154
|
-
<a href="
|
145
|
+
<a href="Time.src/M000001.html" target="Code" class="method-signature"
|
146
|
+
onclick="popupCode('Time.src/M000001.html');return false;">
|
155
147
|
<span class="method-name">to_json</span><span class="method-args">(*a)</span>
|
156
148
|
</a>
|
157
149
|
</div>
|
@@ -160,19 +152,6 @@ Deserialize from JSON
|
|
160
152
|
<p>
|
161
153
|
Serialize to JSON
|
162
154
|
</p>
|
163
|
-
<p><a class="source-toggle" href="#"
|
164
|
-
onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
|
165
|
-
<div class="method-source-code" id="M000001-source">
|
166
|
-
<pre>
|
167
|
-
<span class="ruby-comment cmt"># File lib/frivol.rb, line 209</span>
|
168
|
-
<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>)
|
169
|
-
{
|
170
|
-
<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>,
|
171
|
-
<span class="ruby-value str">'data'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>
|
172
|
-
}.<span class="ruby-identifier">to_json</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)
|
173
|
-
<span class="ruby-keyword kw">end</span>
|
174
|
-
</pre>
|
175
|
-
</div>
|
176
155
|
</div>
|
177
156
|
</div>
|
178
157
|
|
@@ -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 330</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 338</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
|
-
|
1
|
+
Fri, 15 Oct 2010 11:43:06 +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>
|
59
|
+
<td>Fri Oct 15 11:30:46 +0200 2010</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -79,9 +79,9 @@ really.
|
|
79
79
|
I developed <a href="../../classes/Frivol.html">Frivol</a> secifically for
|
80
80
|
use in Mad Mimi (<a href="http://madmimi.com">madmimi.com</a>) to help with
|
81
81
|
caching of data which requires fairly long running (multi-second) database
|
82
|
-
queries, and also to aid with communication of status from background
|
83
|
-
|
84
|
-
because we already had Resque, which is Redis-backed. Also, unlike
|
82
|
+
queries, and also to aid with communication of status from background
|
83
|
+
Resque jobs running on the workers to the front end web servers. Redis was
|
84
|
+
chosen because we already had Resque, which is Redis-backed. Also, unlike
|
85
85
|
memcached, Redis persists it‘s data to disk, meaning there is far
|
86
86
|
less warmup required when a hot system is restarted. <a
|
87
87
|
href="../../classes/Frivol.html">Frivol</a>‘s design is such that it
|
@@ -117,6 +117,35 @@ href="../../classes/Frivol.html">Frivol</a> will check if the class
|
|
117
117
|
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
|
+
<tt>delete_storage</tt>, as the name suggests will immediately delete the
|
121
|
+
storage.
|
122
|
+
</p>
|
123
|
+
<p>
|
124
|
+
Since version 0.1.5 <a href="../../classes/Frivol.html">Frivol</a> can
|
125
|
+
create different storage buckets. Note that this introduces a breaking
|
126
|
+
change to the <tt>storage_key</tt> method if you have overriden it. It now
|
127
|
+
takes a <tt>bucket</tt> parameter.
|
128
|
+
</p>
|
129
|
+
<p>
|
130
|
+
Buckets can have their own expiry time and there are special counter
|
131
|
+
buckets which simply keep an integer count.
|
132
|
+
</p>
|
133
|
+
<pre>
|
134
|
+
storage_bucket :my_bucket, :expires_in => 5.minutes
|
135
|
+
storage_bucket :my_counter, :counter => true
|
136
|
+
</pre>
|
137
|
+
<p>
|
138
|
+
Given the above, <a href="../../classes/Frivol.html">Frivol</a> will create
|
139
|
+
<tt>store_my_bucket</tt> and <tt>retrieve_my_bucket</tt> methods which work
|
140
|
+
exactly like the standard <tt>store</tt> and <tt>retrieve</tt> methods.
|
141
|
+
There will also be <tt>store_my_counter</tt>, <tt>retrieve_my_counter</tt>
|
142
|
+
and <tt>increment_my_counter</tt> methods. The counter store and retrieve
|
143
|
+
only take a integer (value and default, respectively) and the increment
|
144
|
+
does not take a parameter.
|
145
|
+
</p>
|
146
|
+
<p>
|
147
|
+
These methods are thread safe if you pass <tt>:thread_safe => true</tt>
|
148
|
+
to the Redis configuration.
|
120
149
|
</p>
|
121
150
|
<p>
|
122
151
|
<a href="../../classes/Frivol.html">Frivol</a> uses the
|
@@ -140,8 +169,8 @@ JSON, which currently used to store data in Redis.
|
|
140
169
|
@key = key
|
141
170
|
end
|
142
171
|
|
143
|
-
def storage_key
|
144
|
-
"frivol-test-#{key}" # override the storage key because we don't respond_to? id
|
172
|
+
def storage_key(bucket = nil)
|
173
|
+
"frivol-test-#{key}" # override the storage key because we don't respond_to? :id, and don't care about buckets
|
145
174
|
end
|
146
175
|
|
147
176
|
def big_complex_calc
|
data/doc/fr_method_index.html
CHANGED
@@ -22,11 +22,12 @@
|
|
22
22
|
<div id="index-entries">
|
23
23
|
<a href="classes/Frivol.html#M000005">delete_storage (Frivol)</a><br />
|
24
24
|
<a href="classes/Frivol.html#M000006">expire_storage (Frivol)</a><br />
|
25
|
-
<a href="classes/Frivol/Config.html#
|
25
|
+
<a href="classes/Frivol/Config.html#M000013">include_in (Frivol::Config)</a><br />
|
26
26
|
<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#
|
27
|
+
<a href="classes/Frivol/Config.html#M000012">redis (Frivol::Config)</a><br />
|
28
|
+
<a href="classes/Frivol/Config.html#M000011">redis_config= (Frivol::Config)</a><br />
|
29
29
|
<a href="classes/Frivol.html#M000004">retrieve (Frivol)</a><br />
|
30
|
+
<a href="classes/Frivol/ClassMethods.html#M000010">storage_bucket (Frivol::ClassMethods)</a><br />
|
30
31
|
<a href="classes/Frivol/ClassMethods.html#M000008">storage_expires_in (Frivol::ClassMethods)</a><br />
|
31
32
|
<a href="classes/Frivol/ClassMethods.html#M000009">storage_expiry (Frivol::ClassMethods)</a><br />
|
32
33
|
<a href="classes/Frivol.html#M000007">storage_key (Frivol)</a><br />
|
data/doc/index.html
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
<!--
|
7
7
|
|
8
|
-
|
8
|
+
RDoc Documentation
|
9
9
|
|
10
10
|
-->
|
11
11
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
12
|
<head>
|
13
|
-
<title>
|
13
|
+
<title>RDoc Documentation</title>
|
14
14
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
15
15
|
</head>
|
16
16
|
<frameset rows="20%, 80%">
|
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.5"
|
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-
|
12
|
+
s.date = %q{2010-10-15}
|
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 = [
|
@@ -28,13 +28,18 @@ Gem::Specification.new do |s|
|
|
28
28
|
"doc/classes/Frivol.src/M000004.html",
|
29
29
|
"doc/classes/Frivol.src/M000005.html",
|
30
30
|
"doc/classes/Frivol.src/M000006.html",
|
31
|
+
"doc/classes/Frivol.src/M000007.html",
|
31
32
|
"doc/classes/Frivol/ClassMethods.html",
|
32
33
|
"doc/classes/Frivol/ClassMethods.src/M000007.html",
|
33
34
|
"doc/classes/Frivol/ClassMethods.src/M000008.html",
|
35
|
+
"doc/classes/Frivol/ClassMethods.src/M000009.html",
|
36
|
+
"doc/classes/Frivol/ClassMethods.src/M000010.html",
|
34
37
|
"doc/classes/Frivol/Config.html",
|
35
38
|
"doc/classes/Frivol/Config.src/M000009.html",
|
36
39
|
"doc/classes/Frivol/Config.src/M000010.html",
|
37
40
|
"doc/classes/Frivol/Config.src/M000011.html",
|
41
|
+
"doc/classes/Frivol/Config.src/M000012.html",
|
42
|
+
"doc/classes/Frivol/Config.src/M000013.html",
|
38
43
|
"doc/classes/Time.html",
|
39
44
|
"doc/classes/Time.src/M000001.html",
|
40
45
|
"doc/classes/Time.src/M000002.html",
|
@@ -68,16 +73,16 @@ Gem::Specification.new do |s|
|
|
68
73
|
|
69
74
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
70
75
|
s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
|
71
|
-
s.add_runtime_dependency(%q<redis>, [">= 0.
|
76
|
+
s.add_runtime_dependency(%q<redis>, [">= 2.0.10"])
|
72
77
|
s.add_development_dependency(%q<shoulda>, [">= 2.11.1"])
|
73
78
|
else
|
74
79
|
s.add_dependency(%q<json>, [">= 1.2.0"])
|
75
|
-
s.add_dependency(%q<redis>, [">= 0.
|
80
|
+
s.add_dependency(%q<redis>, [">= 2.0.10"])
|
76
81
|
s.add_dependency(%q<shoulda>, [">= 2.11.1"])
|
77
82
|
end
|
78
83
|
else
|
79
84
|
s.add_dependency(%q<json>, [">= 1.2.0"])
|
80
|
-
s.add_dependency(%q<redis>, [">= 0.
|
85
|
+
s.add_dependency(%q<redis>, [">= 2.0.10"])
|
81
86
|
s.add_dependency(%q<shoulda>, [">= 2.11.1"])
|
82
87
|
end
|
83
88
|
end
|