interlock 1.0 → 1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +2 -0
- data/Manifest +8 -15
- data/README +16 -73
- data/TODO +3 -0
- data/interlock.gemspec +16 -9
- data/lib/interlock/action_controller.rb +135 -36
- data/lib/interlock/action_view.rb +85 -18
- data/lib/interlock/active_record.rb +1 -1
- data/lib/interlock/config.rb +1 -1
- data/lib/interlock/interlock.rb +22 -3
- data/tasks/interlock.rake +10 -0
- data/test/integration/app/app/controllers/application.rb +2 -2
- data/test/integration/app/app/controllers/items_controller.rb +19 -1
- data/test/integration/app/app/views/items/detail.rhtml +20 -0
- data/test/integration/app/app/views/items/{list.html.erb → list.rhtml} +6 -0
- data/test/integration/app/app/views/items/{recent.html.erb → recent.rhtml} +0 -0
- data/test/integration/app/app/views/items/{show.html.erb → show.rhtml} +1 -1
- data/test/integration/app/app/views/layouts/application.html.erb +9 -0
- data/test/integration/app/app/views/shared/{_related.html.erb → _related.rhtml} +0 -0
- data/test/integration/app/config/boot.rb +2 -0
- data/test/integration/app/config/environment.rb +1 -3
- data/test/integration/server_test.rb +53 -6
- data/test/setup.rb +5 -0
- data/test/teardown.rb +0 -4
- data/test/test_helper.rb +9 -2
- data/test/unit/interlock_test.rb +21 -0
- data.tar.gz.sig +0 -0
- metadata +14 -20
- metadata.gz.sig +0 -0
- data/test/integration/app/coverage/cache-43041 +0 -0
- data/test/integration/app/coverage/index.html +0 -414
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_controller_rb.html +0 -733
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_view_rb.html +0 -644
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-active_record_rb.html +0 -639
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-config_rb.html +0 -688
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-core_extensions_rb.html +0 -674
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-interlock_rb.html +0 -722
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-memcached_rb.html +0 -640
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock_rb.html +0 -635
- data/test/integration/app/db/schema.rb +0 -21
data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_controller_rb.html
DELETED
@@ -1,733 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>vendor/plugins/interlock/lib/interlock/action_controller.rb - C0 code coverage information</title>
|
3
|
-
<style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
|
4
|
-
<style type='text/css'>span.cross-ref-title {
|
5
|
-
font-size: 140%;
|
6
|
-
}
|
7
|
-
span.cross-ref a {
|
8
|
-
text-decoration: none;
|
9
|
-
}
|
10
|
-
span.cross-ref {
|
11
|
-
background-color:#f3f7fa;
|
12
|
-
border: 1px dashed #333;
|
13
|
-
margin: 1em;
|
14
|
-
padding: 0.5em;
|
15
|
-
overflow: hidden;
|
16
|
-
}
|
17
|
-
a.crossref-toggle {
|
18
|
-
text-decoration: none;
|
19
|
-
}
|
20
|
-
span.marked0 {
|
21
|
-
background-color: rgb(185, 210, 200);
|
22
|
-
display: block;
|
23
|
-
}
|
24
|
-
span.marked1 {
|
25
|
-
background-color: rgb(190, 215, 205);
|
26
|
-
display: block;
|
27
|
-
}
|
28
|
-
span.inferred0 {
|
29
|
-
background-color: rgb(175, 200, 200);
|
30
|
-
display: block;
|
31
|
-
}
|
32
|
-
span.inferred1 {
|
33
|
-
background-color: rgb(180, 205, 205);
|
34
|
-
display: block;
|
35
|
-
}
|
36
|
-
span.uncovered0 {
|
37
|
-
background-color: rgb(225, 110, 110);
|
38
|
-
display: block;
|
39
|
-
}
|
40
|
-
span.uncovered1 {
|
41
|
-
background-color: rgb(235, 120, 120);
|
42
|
-
display: block;
|
43
|
-
}
|
44
|
-
span.overview {
|
45
|
-
border-bottom: 8px solid black;
|
46
|
-
}
|
47
|
-
div.overview {
|
48
|
-
border-bottom: 8px solid black;
|
49
|
-
}
|
50
|
-
body {
|
51
|
-
font-family: verdana, arial, helvetica;
|
52
|
-
}
|
53
|
-
div.footer {
|
54
|
-
font-size: 68%;
|
55
|
-
margin-top: 1.5em;
|
56
|
-
}
|
57
|
-
h1, h2, h3, h4, h5, h6 {
|
58
|
-
margin-bottom: 0.5em;
|
59
|
-
}
|
60
|
-
h5 {
|
61
|
-
margin-top: 0.5em;
|
62
|
-
}
|
63
|
-
.hidden {
|
64
|
-
display: none;
|
65
|
-
}
|
66
|
-
div.separator {
|
67
|
-
height: 10px;
|
68
|
-
}
|
69
|
-
/* Commented out for better readability, esp. on IE */
|
70
|
-
/*
|
71
|
-
table tr td, table tr th {
|
72
|
-
font-size: 68%;
|
73
|
-
}
|
74
|
-
td.value table tr td {
|
75
|
-
font-size: 11px;
|
76
|
-
}
|
77
|
-
*/
|
78
|
-
table.percent_graph {
|
79
|
-
height: 12px;
|
80
|
-
border: #808080 1px solid;
|
81
|
-
empty-cells: show;
|
82
|
-
}
|
83
|
-
table.percent_graph td.covered {
|
84
|
-
height: 10px;
|
85
|
-
background: #00f000;
|
86
|
-
}
|
87
|
-
table.percent_graph td.uncovered {
|
88
|
-
height: 10px;
|
89
|
-
background: #e00000;
|
90
|
-
}
|
91
|
-
table.percent_graph td.NA {
|
92
|
-
height: 10px;
|
93
|
-
background: #eaeaea;
|
94
|
-
}
|
95
|
-
table.report {
|
96
|
-
border-collapse: collapse;
|
97
|
-
width: 100%;
|
98
|
-
}
|
99
|
-
table.report td.heading {
|
100
|
-
background: #dcecff;
|
101
|
-
border: #d0d0d0 1px solid;
|
102
|
-
font-weight: bold;
|
103
|
-
text-align: center;
|
104
|
-
}
|
105
|
-
table.report td.heading:hover {
|
106
|
-
background: #c0ffc0;
|
107
|
-
}
|
108
|
-
table.report td.text {
|
109
|
-
border: #d0d0d0 1px solid;
|
110
|
-
}
|
111
|
-
table.report td.value,
|
112
|
-
table.report td.lines_total,
|
113
|
-
table.report td.lines_code {
|
114
|
-
text-align: right;
|
115
|
-
border: #d0d0d0 1px solid;
|
116
|
-
}
|
117
|
-
table.report tr.light {
|
118
|
-
background-color: rgb(240, 240, 245);
|
119
|
-
}
|
120
|
-
table.report tr.dark {
|
121
|
-
background-color: rgb(230, 230, 235);
|
122
|
-
}
|
123
|
-
</style>
|
124
|
-
<script type='text/javascript'>
|
125
|
-
// <![CDATA[
|
126
|
-
function toggleCode( id ) {
|
127
|
-
if ( document.getElementById )
|
128
|
-
elem = document.getElementById( id );
|
129
|
-
else if ( document.all )
|
130
|
-
elem = eval( "document.all." + id );
|
131
|
-
else
|
132
|
-
return false;
|
133
|
-
|
134
|
-
elemStyle = elem.style;
|
135
|
-
|
136
|
-
if ( elemStyle.display != "block" ) {
|
137
|
-
elemStyle.display = "block"
|
138
|
-
} else {
|
139
|
-
elemStyle.display = "none"
|
140
|
-
}
|
141
|
-
|
142
|
-
return true;
|
143
|
-
}
|
144
|
-
|
145
|
-
// Make cross-references hidden by default
|
146
|
-
document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
|
147
|
-
// ]]>
|
148
|
-
</script>
|
149
|
-
<style type='text/css'>span.run0 {
|
150
|
-
background-color: rgb(178, 204, 255);
|
151
|
-
display: block;
|
152
|
-
}
|
153
|
-
span.run1 {
|
154
|
-
background-color: rgb(178, 206, 255);
|
155
|
-
display: block;
|
156
|
-
}
|
157
|
-
span.run2 {
|
158
|
-
background-color: rgb(178, 209, 255);
|
159
|
-
display: block;
|
160
|
-
}
|
161
|
-
span.run3 {
|
162
|
-
background-color: rgb(178, 211, 255);
|
163
|
-
display: block;
|
164
|
-
}
|
165
|
-
span.run4 {
|
166
|
-
background-color: rgb(178, 214, 255);
|
167
|
-
display: block;
|
168
|
-
}
|
169
|
-
span.run5 {
|
170
|
-
background-color: rgb(178, 218, 255);
|
171
|
-
display: block;
|
172
|
-
}
|
173
|
-
span.run6 {
|
174
|
-
background-color: rgb(178, 220, 255);
|
175
|
-
display: block;
|
176
|
-
}
|
177
|
-
span.run7 {
|
178
|
-
background-color: rgb(178, 223, 255);
|
179
|
-
display: block;
|
180
|
-
}
|
181
|
-
span.run8 {
|
182
|
-
background-color: rgb(178, 225, 255);
|
183
|
-
display: block;
|
184
|
-
}
|
185
|
-
span.run9 {
|
186
|
-
background-color: rgb(178, 228, 255);
|
187
|
-
display: block;
|
188
|
-
}
|
189
|
-
span.run10 {
|
190
|
-
background-color: rgb(178, 232, 255);
|
191
|
-
display: block;
|
192
|
-
}
|
193
|
-
span.run11 {
|
194
|
-
background-color: rgb(178, 234, 255);
|
195
|
-
display: block;
|
196
|
-
}
|
197
|
-
span.run12 {
|
198
|
-
background-color: rgb(178, 237, 255);
|
199
|
-
display: block;
|
200
|
-
}
|
201
|
-
span.run13 {
|
202
|
-
background-color: rgb(178, 239, 255);
|
203
|
-
display: block;
|
204
|
-
}
|
205
|
-
span.run14 {
|
206
|
-
background-color: rgb(178, 242, 255);
|
207
|
-
display: block;
|
208
|
-
}
|
209
|
-
span.run15 {
|
210
|
-
background-color: rgb(178, 246, 255);
|
211
|
-
display: block;
|
212
|
-
}
|
213
|
-
span.run16 {
|
214
|
-
background-color: rgb(178, 248, 255);
|
215
|
-
display: block;
|
216
|
-
}
|
217
|
-
span.run17 {
|
218
|
-
background-color: rgb(178, 251, 255);
|
219
|
-
display: block;
|
220
|
-
}
|
221
|
-
span.run18 {
|
222
|
-
background-color: rgb(178, 253, 255);
|
223
|
-
display: block;
|
224
|
-
}
|
225
|
-
span.run19 {
|
226
|
-
background-color: rgb(178, 255, 253);
|
227
|
-
display: block;
|
228
|
-
}
|
229
|
-
span.run20 {
|
230
|
-
background-color: rgb(178, 255, 249);
|
231
|
-
display: block;
|
232
|
-
}
|
233
|
-
span.run21 {
|
234
|
-
background-color: rgb(178, 255, 247);
|
235
|
-
display: block;
|
236
|
-
}
|
237
|
-
span.run22 {
|
238
|
-
background-color: rgb(178, 255, 244);
|
239
|
-
display: block;
|
240
|
-
}
|
241
|
-
span.run23 {
|
242
|
-
background-color: rgb(178, 255, 242);
|
243
|
-
display: block;
|
244
|
-
}
|
245
|
-
span.run24 {
|
246
|
-
background-color: rgb(178, 255, 239);
|
247
|
-
display: block;
|
248
|
-
}
|
249
|
-
span.run25 {
|
250
|
-
background-color: rgb(178, 255, 235);
|
251
|
-
display: block;
|
252
|
-
}
|
253
|
-
span.run26 {
|
254
|
-
background-color: rgb(178, 255, 233);
|
255
|
-
display: block;
|
256
|
-
}
|
257
|
-
span.run27 {
|
258
|
-
background-color: rgb(178, 255, 230);
|
259
|
-
display: block;
|
260
|
-
}
|
261
|
-
span.run28 {
|
262
|
-
background-color: rgb(178, 255, 228);
|
263
|
-
display: block;
|
264
|
-
}
|
265
|
-
span.run29 {
|
266
|
-
background-color: rgb(178, 255, 225);
|
267
|
-
display: block;
|
268
|
-
}
|
269
|
-
span.run30 {
|
270
|
-
background-color: rgb(178, 255, 221);
|
271
|
-
display: block;
|
272
|
-
}
|
273
|
-
span.run31 {
|
274
|
-
background-color: rgb(178, 255, 219);
|
275
|
-
display: block;
|
276
|
-
}
|
277
|
-
span.run32 {
|
278
|
-
background-color: rgb(178, 255, 216);
|
279
|
-
display: block;
|
280
|
-
}
|
281
|
-
span.run33 {
|
282
|
-
background-color: rgb(178, 255, 214);
|
283
|
-
display: block;
|
284
|
-
}
|
285
|
-
span.run34 {
|
286
|
-
background-color: rgb(178, 255, 211);
|
287
|
-
display: block;
|
288
|
-
}
|
289
|
-
span.run35 {
|
290
|
-
background-color: rgb(178, 255, 207);
|
291
|
-
display: block;
|
292
|
-
}
|
293
|
-
span.run36 {
|
294
|
-
background-color: rgb(178, 255, 205);
|
295
|
-
display: block;
|
296
|
-
}
|
297
|
-
span.run37 {
|
298
|
-
background-color: rgb(178, 255, 202);
|
299
|
-
display: block;
|
300
|
-
}
|
301
|
-
span.run38 {
|
302
|
-
background-color: rgb(178, 255, 200);
|
303
|
-
display: block;
|
304
|
-
}
|
305
|
-
span.run39 {
|
306
|
-
background-color: rgb(178, 255, 197);
|
307
|
-
display: block;
|
308
|
-
}
|
309
|
-
span.run40 {
|
310
|
-
background-color: rgb(178, 255, 193);
|
311
|
-
display: block;
|
312
|
-
}
|
313
|
-
span.run41 {
|
314
|
-
background-color: rgb(178, 255, 191);
|
315
|
-
display: block;
|
316
|
-
}
|
317
|
-
span.run42 {
|
318
|
-
background-color: rgb(178, 255, 188);
|
319
|
-
display: block;
|
320
|
-
}
|
321
|
-
span.run43 {
|
322
|
-
background-color: rgb(178, 255, 186);
|
323
|
-
display: block;
|
324
|
-
}
|
325
|
-
span.run44 {
|
326
|
-
background-color: rgb(178, 255, 183);
|
327
|
-
display: block;
|
328
|
-
}
|
329
|
-
span.run45 {
|
330
|
-
background-color: rgb(178, 255, 179);
|
331
|
-
display: block;
|
332
|
-
}
|
333
|
-
span.run46 {
|
334
|
-
background-color: rgb(179, 255, 178);
|
335
|
-
display: block;
|
336
|
-
}
|
337
|
-
span.run47 {
|
338
|
-
background-color: rgb(182, 255, 178);
|
339
|
-
display: block;
|
340
|
-
}
|
341
|
-
span.run48 {
|
342
|
-
background-color: rgb(184, 255, 178);
|
343
|
-
display: block;
|
344
|
-
}
|
345
|
-
span.run49 {
|
346
|
-
background-color: rgb(187, 255, 178);
|
347
|
-
display: block;
|
348
|
-
}
|
349
|
-
span.run50 {
|
350
|
-
background-color: rgb(191, 255, 178);
|
351
|
-
display: block;
|
352
|
-
}
|
353
|
-
span.run51 {
|
354
|
-
background-color: rgb(193, 255, 178);
|
355
|
-
display: block;
|
356
|
-
}
|
357
|
-
span.run52 {
|
358
|
-
background-color: rgb(196, 255, 178);
|
359
|
-
display: block;
|
360
|
-
}
|
361
|
-
span.run53 {
|
362
|
-
background-color: rgb(198, 255, 178);
|
363
|
-
display: block;
|
364
|
-
}
|
365
|
-
span.run54 {
|
366
|
-
background-color: rgb(201, 255, 178);
|
367
|
-
display: block;
|
368
|
-
}
|
369
|
-
span.run55 {
|
370
|
-
background-color: rgb(205, 255, 178);
|
371
|
-
display: block;
|
372
|
-
}
|
373
|
-
span.run56 {
|
374
|
-
background-color: rgb(207, 255, 178);
|
375
|
-
display: block;
|
376
|
-
}
|
377
|
-
span.run57 {
|
378
|
-
background-color: rgb(210, 255, 178);
|
379
|
-
display: block;
|
380
|
-
}
|
381
|
-
span.run58 {
|
382
|
-
background-color: rgb(212, 255, 178);
|
383
|
-
display: block;
|
384
|
-
}
|
385
|
-
span.run59 {
|
386
|
-
background-color: rgb(215, 255, 178);
|
387
|
-
display: block;
|
388
|
-
}
|
389
|
-
span.run60 {
|
390
|
-
background-color: rgb(219, 255, 178);
|
391
|
-
display: block;
|
392
|
-
}
|
393
|
-
span.run61 {
|
394
|
-
background-color: rgb(221, 255, 178);
|
395
|
-
display: block;
|
396
|
-
}
|
397
|
-
span.run62 {
|
398
|
-
background-color: rgb(224, 255, 178);
|
399
|
-
display: block;
|
400
|
-
}
|
401
|
-
span.run63 {
|
402
|
-
background-color: rgb(226, 255, 178);
|
403
|
-
display: block;
|
404
|
-
}
|
405
|
-
span.run64 {
|
406
|
-
background-color: rgb(229, 255, 178);
|
407
|
-
display: block;
|
408
|
-
}
|
409
|
-
span.run65 {
|
410
|
-
background-color: rgb(233, 255, 178);
|
411
|
-
display: block;
|
412
|
-
}
|
413
|
-
span.run66 {
|
414
|
-
background-color: rgb(235, 255, 178);
|
415
|
-
display: block;
|
416
|
-
}
|
417
|
-
span.run67 {
|
418
|
-
background-color: rgb(238, 255, 178);
|
419
|
-
display: block;
|
420
|
-
}
|
421
|
-
span.run68 {
|
422
|
-
background-color: rgb(240, 255, 178);
|
423
|
-
display: block;
|
424
|
-
}
|
425
|
-
span.run69 {
|
426
|
-
background-color: rgb(243, 255, 178);
|
427
|
-
display: block;
|
428
|
-
}
|
429
|
-
span.run70 {
|
430
|
-
background-color: rgb(247, 255, 178);
|
431
|
-
display: block;
|
432
|
-
}
|
433
|
-
span.run71 {
|
434
|
-
background-color: rgb(249, 255, 178);
|
435
|
-
display: block;
|
436
|
-
}
|
437
|
-
span.run72 {
|
438
|
-
background-color: rgb(252, 255, 178);
|
439
|
-
display: block;
|
440
|
-
}
|
441
|
-
span.run73 {
|
442
|
-
background-color: rgb(255, 255, 178);
|
443
|
-
display: block;
|
444
|
-
}
|
445
|
-
span.run74 {
|
446
|
-
background-color: rgb(255, 252, 178);
|
447
|
-
display: block;
|
448
|
-
}
|
449
|
-
span.run75 {
|
450
|
-
background-color: rgb(255, 248, 178);
|
451
|
-
display: block;
|
452
|
-
}
|
453
|
-
span.run76 {
|
454
|
-
background-color: rgb(255, 246, 178);
|
455
|
-
display: block;
|
456
|
-
}
|
457
|
-
span.run77 {
|
458
|
-
background-color: rgb(255, 243, 178);
|
459
|
-
display: block;
|
460
|
-
}
|
461
|
-
span.run78 {
|
462
|
-
background-color: rgb(255, 240, 178);
|
463
|
-
display: block;
|
464
|
-
}
|
465
|
-
span.run79 {
|
466
|
-
background-color: rgb(255, 238, 178);
|
467
|
-
display: block;
|
468
|
-
}
|
469
|
-
span.run80 {
|
470
|
-
background-color: rgb(255, 234, 178);
|
471
|
-
display: block;
|
472
|
-
}
|
473
|
-
span.run81 {
|
474
|
-
background-color: rgb(255, 232, 178);
|
475
|
-
display: block;
|
476
|
-
}
|
477
|
-
span.run82 {
|
478
|
-
background-color: rgb(255, 229, 178);
|
479
|
-
display: block;
|
480
|
-
}
|
481
|
-
span.run83 {
|
482
|
-
background-color: rgb(255, 226, 178);
|
483
|
-
display: block;
|
484
|
-
}
|
485
|
-
span.run84 {
|
486
|
-
background-color: rgb(255, 224, 178);
|
487
|
-
display: block;
|
488
|
-
}
|
489
|
-
span.run85 {
|
490
|
-
background-color: rgb(255, 220, 178);
|
491
|
-
display: block;
|
492
|
-
}
|
493
|
-
span.run86 {
|
494
|
-
background-color: rgb(255, 218, 178);
|
495
|
-
display: block;
|
496
|
-
}
|
497
|
-
span.run87 {
|
498
|
-
background-color: rgb(255, 215, 178);
|
499
|
-
display: block;
|
500
|
-
}
|
501
|
-
span.run88 {
|
502
|
-
background-color: rgb(255, 212, 178);
|
503
|
-
display: block;
|
504
|
-
}
|
505
|
-
span.run89 {
|
506
|
-
background-color: rgb(255, 210, 178);
|
507
|
-
display: block;
|
508
|
-
}
|
509
|
-
span.run90 {
|
510
|
-
background-color: rgb(255, 206, 178);
|
511
|
-
display: block;
|
512
|
-
}
|
513
|
-
span.run91 {
|
514
|
-
background-color: rgb(255, 204, 178);
|
515
|
-
display: block;
|
516
|
-
}
|
517
|
-
span.run92 {
|
518
|
-
background-color: rgb(255, 201, 178);
|
519
|
-
display: block;
|
520
|
-
}
|
521
|
-
span.run93 {
|
522
|
-
background-color: rgb(255, 198, 178);
|
523
|
-
display: block;
|
524
|
-
}
|
525
|
-
span.run94 {
|
526
|
-
background-color: rgb(255, 196, 178);
|
527
|
-
display: block;
|
528
|
-
}
|
529
|
-
span.run95 {
|
530
|
-
background-color: rgb(255, 192, 178);
|
531
|
-
display: block;
|
532
|
-
}
|
533
|
-
span.run96 {
|
534
|
-
background-color: rgb(255, 189, 178);
|
535
|
-
display: block;
|
536
|
-
}
|
537
|
-
span.run97 {
|
538
|
-
background-color: rgb(255, 187, 178);
|
539
|
-
display: block;
|
540
|
-
}
|
541
|
-
span.run98 {
|
542
|
-
background-color: rgb(255, 184, 178);
|
543
|
-
display: block;
|
544
|
-
}
|
545
|
-
span.run99 {
|
546
|
-
background-color: rgb(255, 182, 178);
|
547
|
-
display: block;
|
548
|
-
}
|
549
|
-
span.run100 {
|
550
|
-
background-color: rgb(255, 178, 178);
|
551
|
-
display: block;
|
552
|
-
}
|
553
|
-
</style>
|
554
|
-
</head>
|
555
|
-
<body><h3>C0 code coverage information</h3>
|
556
|
-
<p>Generated on Thu Dec 13 04:51:25 -0500 2007 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
|
557
|
-
</p>
|
558
|
-
<hr/>
|
559
|
-
<pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
560
|
-
</span><span class='marked1'>and this: this line is also marked as covered.
|
561
|
-
</span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
|
562
|
-
</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
|
563
|
-
</span><span class='uncovered0'>Finally, here's a line marked as not executed.
|
564
|
-
</span></pre>
|
565
|
-
<table class='report'><thead><tr><td class='heading'>Name</td>
|
566
|
-
<td class='heading'>Total lines</td>
|
567
|
-
<td class='heading'>Lines of code</td>
|
568
|
-
<td class='heading'>Total coverage</td>
|
569
|
-
<td class='heading'>Code coverage</td>
|
570
|
-
</tr>
|
571
|
-
</thead>
|
572
|
-
<tbody><tr class='light'><td><a href='vendor-plugins-interlock-lib-interlock-action_controller_rb.html'>vendor/plugins/interlock/lib/interlock/action_controller.rb</a>
|
573
|
-
</td>
|
574
|
-
<td class='lines_total'><tt>123</tt>
|
575
|
-
</td>
|
576
|
-
<td class='lines_code'><tt>63</tt>
|
577
|
-
</td>
|
578
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>94.3%</tt>
|
579
|
-
</td>
|
580
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='94'/>
|
581
|
-
<td class='uncovered' width='6'/>
|
582
|
-
</tr>
|
583
|
-
</table>
|
584
|
-
</td>
|
585
|
-
</tr>
|
586
|
-
</table>
|
587
|
-
</td>
|
588
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>90.5%</tt>
|
589
|
-
</td>
|
590
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='90'/>
|
591
|
-
<td class='uncovered' width='10'/>
|
592
|
-
</tr>
|
593
|
-
</table>
|
594
|
-
</td>
|
595
|
-
</tr>
|
596
|
-
</table>
|
597
|
-
</td>
|
598
|
-
</tr>
|
599
|
-
</tbody>
|
600
|
-
</table>
|
601
|
-
<pre><span class="inferred0"><a name="line1"></a> 1
|
602
|
-
</span><span class="marked1"><a name="line2"></a> 2 module ActionController #:nodoc:
|
603
|
-
</span><span class="marked0"><a name="line3"></a> 3 class Base
|
604
|
-
</span><span class="inferred1"><a name="line4"></a> 4
|
605
|
-
</span><span class="inferred0"><a name="line5"></a> 5 #
|
606
|
-
</span><span class="inferred1"><a name="line6"></a> 6 # Build the fragment key from a particular context. This must be deterministic
|
607
|
-
</span><span class="inferred0"><a name="line7"></a> 7 # and stateful except for the tag. We can't scope the key to arbitrary params
|
608
|
-
</span><span class="inferred1"><a name="line8"></a> 8 # because the view doesn't have access to which are relevant and which are
|
609
|
-
</span><span class="inferred0"><a name="line9"></a> 9 # not.
|
610
|
-
</span><span class="inferred1"><a name="line10"></a> 10 #
|
611
|
-
</span><span class="inferred0"><a name="line11"></a> 11 # Note that the tag can be pretty much any object. Define #to_interlock_tag
|
612
|
-
</span><span class="inferred1"><a name="line12"></a> 12 # if you need custom tagging for some class. ActiveRecord::Base already
|
613
|
-
</span><span class="inferred0"><a name="line13"></a> 13 # has it defined appropriately.
|
614
|
-
</span><span class="inferred1"><a name="line14"></a> 14 #
|
615
|
-
</span><span class="inferred0"><a name="line15"></a> 15 # If you pass an Array of symbols as the tag, it will get value-mapped onto
|
616
|
-
</span><span class="inferred1"><a name="line16"></a> 16 # params and sorted. This makes granular scoping easier, although it doesn't
|
617
|
-
</span><span class="inferred0"><a name="line17"></a> 17 # sidestep the normal blanket invalidations.
|
618
|
-
</span><span class="inferred1"><a name="line18"></a> 18 #
|
619
|
-
</span><span class="marked0"><a name="line19"></a> 19 def caching_key(ignore = nil, tag = nil)
|
620
|
-
</span><span class="marked1"><a name="line20"></a> 20 ignore = Array(ignore)
|
621
|
-
</span><span class="marked0"><a name="line21"></a> 21 ignore = Interlock::SCOPE_KEYS if ignore.include? :all
|
622
|
-
</span><span class="inferred1"><a name="line22"></a> 22
|
623
|
-
</span><span class="marked0"><a name="line23"></a> 23 if (Interlock::SCOPE_KEYS - ignore).empty? and !tag
|
624
|
-
</span><span class="uncovered1"><a name="line24"></a> 24 raise UsageError, "You must specify a :tag if you are ignoring the entire default scope."
|
625
|
-
</span><span class="uncovered0"><a name="line25"></a> 25 end
|
626
|
-
</span><span class="inferred1"><a name="line26"></a> 26
|
627
|
-
</span><span class="marked0"><a name="line27"></a> 27 if tag.is_a? Array and tag.all? {|x| x.is_a? Symbol}
|
628
|
-
</span><span class="marked1"><a name="line28"></a> 28 tag = tag.sort_by do |key|
|
629
|
-
</span><span class="marked0"><a name="line29"></a> 29 key.to_s
|
630
|
-
</span><span class="inferred1"><a name="line30"></a> 30 end.map do |key|
|
631
|
-
</span><span class="marked0"><a name="line31"></a> 31 params[key].to_interlock_tag
|
632
|
-
</span><span class="uncovered1"><a name="line32"></a> 32 end.join(";")
|
633
|
-
</span><span class="uncovered0"><a name="line33"></a> 33 end
|
634
|
-
</span><span class="inferred1"><a name="line34"></a> 34
|
635
|
-
</span><span class="marked0"><a name="line35"></a> 35 Interlock.caching_key(
|
636
|
-
</span><span class="marked1"><a name="line36"></a> 36 ignore.include?(:controller) ? 'any' : controller_name,
|
637
|
-
</span><span class="marked0"><a name="line37"></a> 37 ignore.include?(:action) ? 'any' : action_name,
|
638
|
-
</span><span class="marked1"><a name="line38"></a> 38 ignore.include?(:id) ? 'all' : params[:id],
|
639
|
-
</span><span class="inferred0"><a name="line39"></a> 39 tag
|
640
|
-
</span><span class="inferred1"><a name="line40"></a> 40 )
|
641
|
-
</span><span class="inferred0"><a name="line41"></a> 41 end
|
642
|
-
</span><span class="inferred1"><a name="line42"></a> 42
|
643
|
-
</span><span class="inferred0"><a name="line43"></a> 43 #
|
644
|
-
</span><span class="inferred1"><a name="line44"></a> 44 # Mark a controller block for caching. Accepts a list of class dependencies for
|
645
|
-
</span><span class="inferred0"><a name="line45"></a> 45 # invalidation, as well as a :tag key for explicit fragment scoping.
|
646
|
-
</span><span class="inferred1"><a name="line46"></a> 46 #
|
647
|
-
</span><span class="marked0"><a name="line47"></a> 47 def behavior_cache(*args)
|
648
|
-
</span><span class="marked1"><a name="line48"></a> 48 conventional_class = begin; controller_name.classify.constantize; rescue NameError; end
|
649
|
-
</span><span class="marked0"><a name="line49"></a> 49 options, dependencies = Interlock.extract_options_and_dependencies(args, conventional_class)
|
650
|
-
</span><span class="inferred1"><a name="line50"></a> 50
|
651
|
-
</span><span class="marked0"><a name="line51"></a> 51 raise UsageError, ":ttl has no effect in a behavior_cache block" if options[:ttl]
|
652
|
-
</span><span class="inferred1"><a name="line52"></a> 52
|
653
|
-
</span><span class="marked0"><a name="line53"></a> 53 key = caching_key(options.value_for_indifferent_key(:ignore), options.value_for_indifferent_key(:tag))
|
654
|
-
</span><span class="marked1"><a name="line54"></a> 54 Interlock.register_dependencies(dependencies, key)
|
655
|
-
</span><span class="inferred0"><a name="line55"></a> 55
|
656
|
-
</span><span class="inferred1"><a name="line56"></a> 56 # See if the fragment exists, and run the block if it doesn't.
|
657
|
-
</span><span class="marked0"><a name="line57"></a> 57 unless read_fragment(key)
|
658
|
-
</span><span class="marked1"><a name="line58"></a> 58 Interlock.say key, "is running the controller block"
|
659
|
-
</span><span class="marked0"><a name="line59"></a> 59 yield
|
660
|
-
</span><span class="inferred1"><a name="line60"></a> 60 end
|
661
|
-
</span><span class="inferred0"><a name="line61"></a> 61 end
|
662
|
-
</span><span class="inferred1"><a name="line62"></a> 62
|
663
|
-
</span><span class="inferred0"><a name="line63"></a> 63 #:stopdoc:
|
664
|
-
</span><span class="marked1"><a name="line64"></a> 64 alias :caching :behavior_cache # Deprecated
|
665
|
-
</span><span class="inferred0"><a name="line65"></a> 65 #:startdoc:
|
666
|
-
</span><span class="inferred1"><a name="line66"></a> 66
|
667
|
-
</span><span class="marked0"><a name="line67"></a> 67 private
|
668
|
-
</span><span class="inferred1"><a name="line68"></a> 68
|
669
|
-
</span><span class="inferred0"><a name="line69"></a> 69 #
|
670
|
-
</span><span class="inferred1"><a name="line70"></a> 70 # Callback to reset the local cache.
|
671
|
-
</span><span class="inferred0"><a name="line71"></a> 71 #
|
672
|
-
</span><span class="marked1"><a name="line72"></a> 72 def clear_interlock_local_cache
|
673
|
-
</span><span class="marked0"><a name="line73"></a> 73 Interlock.local_cache = ActionController::Base::MemoryStore.new
|
674
|
-
</span><span class="marked1"><a name="line74"></a> 74 RAILS_DEFAULT_LOGGER.warn "** cleared interlock local cache"
|
675
|
-
</span><span class="inferred0"><a name="line75"></a> 75 end
|
676
|
-
</span><span class="inferred1"><a name="line76"></a> 76
|
677
|
-
</span><span class="inferred0"><a name="line77"></a> 77 # Should be registered first in the chain
|
678
|
-
</span><span class="marked1"><a name="line78"></a> 78 prepend_before_filter :clear_interlock_local_cache
|
679
|
-
</span><span class="inferred0"><a name="line79"></a> 79
|
680
|
-
</span><span class="inferred1"><a name="line80"></a> 80 end
|
681
|
-
</span><span class="inferred0"><a name="line81"></a> 81
|
682
|
-
</span><span class="marked1"><a name="line82"></a> 82 module Caching #:nodoc:
|
683
|
-
</span><span class="marked0"><a name="line83"></a> 83 module Fragments
|
684
|
-
</span><span class="inferred1"><a name="line84"></a> 84
|
685
|
-
</span><span class="inferred0"><a name="line85"></a> 85 #
|
686
|
-
</span><span class="inferred1"><a name="line86"></a> 86 # Replaces Rail's write_fragment method. Avoids extra checks for regex keys,
|
687
|
-
</span><span class="inferred0"><a name="line87"></a> 87 # which are unsupported, adds more detailed logging information, and stores
|
688
|
-
</span><span class="inferred1"><a name="line88"></a> 88 # writes in the local process cache too to avoid duplicate memcached requests.
|
689
|
-
</span><span class="inferred0"><a name="line89"></a> 89 #
|
690
|
-
</span><span class="marked1"><a name="line90"></a> 90 def write_fragment(key, content, options = nil)
|
691
|
-
</span><span class="marked0"><a name="line91"></a> 91 return unless perform_caching
|
692
|
-
</span><span class="inferred1"><a name="line92"></a> 92
|
693
|
-
</span><span class="marked0"><a name="line93"></a> 93 fragment_cache_store.write(key, content, options)
|
694
|
-
</span><span class="marked1"><a name="line94"></a> 94 Interlock.local_cache.write(key, content, options)
|
695
|
-
</span><span class="inferred0"><a name="line95"></a> 95
|
696
|
-
</span><span class="marked1"><a name="line96"></a> 96 Interlock.say key, "wrote"
|
697
|
-
</span><span class="inferred0"><a name="line97"></a> 97
|
698
|
-
</span><span class="marked1"><a name="line98"></a> 98 content
|
699
|
-
</span><span class="inferred0"><a name="line99"></a> 99 end
|
700
|
-
</span><span class="inferred1"><a name="line100"></a>100
|
701
|
-
</span><span class="inferred0"><a name="line101"></a>101 #
|
702
|
-
</span><span class="inferred1"><a name="line102"></a>102 # Replaces Rail's read_fragment method. Avoids checks for regex keys,
|
703
|
-
</span><span class="inferred0"><a name="line103"></a>103 # which are unsupported, adds more detailed logging information, and
|
704
|
-
</span><span class="inferred1"><a name="line104"></a>104 # checks the local process cache before hitting memcached. Hits on
|
705
|
-
</span><span class="inferred0"><a name="line105"></a>105 # memcached are then stored back locally to avoid duplicate requests.
|
706
|
-
</span><span class="inferred1"><a name="line106"></a>106 #
|
707
|
-
</span><span class="marked0"><a name="line107"></a>107 def read_fragment(key, options = nil)
|
708
|
-
</span><span class="marked1"><a name="line108"></a>108 return unless perform_caching
|
709
|
-
</span><span class="inferred0"><a name="line109"></a>109
|
710
|
-
</span><span class="marked1"><a name="line110"></a>110 if content = Interlock.local_cache.read(key, options)
|
711
|
-
</span><span class="inferred0"><a name="line111"></a>111 # Interlock.say key, "read from local cache"
|
712
|
-
</span><span class="marked1"><a name="line112"></a>112 elsif content = fragment_cache_store.read(key, options)
|
713
|
-
</span><span class="marked0"><a name="line113"></a>113 Interlock.say key, "read from memcached"
|
714
|
-
</span><span class="marked1"><a name="line114"></a>114 Interlock.local_cache.write(key, content, options)
|
715
|
-
</span><span class="uncovered0"><a name="line115"></a>115 else
|
716
|
-
</span><span class="uncovered1"><a name="line116"></a>116 # Interlock.say key, "not found"
|
717
|
-
</span><span class="uncovered0"><a name="line117"></a>117 end
|
718
|
-
</span><span class="marked1"><a name="line118"></a>118 content
|
719
|
-
</span><span class="inferred0"><a name="line119"></a>119 end
|
720
|
-
</span><span class="inferred1"><a name="line120"></a>120
|
721
|
-
</span><span class="inferred0"><a name="line121"></a>121 end
|
722
|
-
</span><span class="inferred1"><a name="line122"></a>122 end
|
723
|
-
</span><span class="inferred0"><a name="line123"></a>123 end
|
724
|
-
</span></pre><hr/>
|
725
|
-
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
726
|
-
version 0.8.1.2.</p>
|
727
|
-
<p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88'/>
|
728
|
-
</a>
|
729
|
-
<a href='http://jigsaw.w3.org/css-validator/check/referer'><img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px'/>
|
730
|
-
</a>
|
731
|
-
</p>
|
732
|
-
</body>
|
733
|
-
</html>
|