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
@@ -1,722 +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/interlock.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:26 -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-interlock_rb.html'>vendor/plugins/interlock/lib/interlock/interlock.rb</a>
|
573
|
-
</td>
|
574
|
-
<td class='lines_total'><tt>112</tt>
|
575
|
-
</td>
|
576
|
-
<td class='lines_code'><tt>54</tt>
|
577
|
-
</td>
|
578
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
|
579
|
-
</td>
|
580
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
|
581
|
-
<td class='uncovered' width='0'/>
|
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'>100.0%</tt>
|
589
|
-
</td>
|
590
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
|
591
|
-
<td class='uncovered' width='0'/>
|
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 Interlock
|
603
|
-
</span><span class="inferred0"><a name="line3"></a> 3
|
604
|
-
</span><span class="marked1"><a name="line4"></a> 4 class InterlockError < StandardError #:nodoc:
|
605
|
-
</span><span class="inferred0"><a name="line5"></a> 5 end
|
606
|
-
</span><span class="marked1"><a name="line6"></a> 6 class DependencyError < InterlockError #:nodoc:
|
607
|
-
</span><span class="inferred0"><a name="line7"></a> 7 end
|
608
|
-
</span><span class="marked1"><a name="line8"></a> 8 class UsageError < InterlockError #:nodoc:
|
609
|
-
</span><span class="inferred0"><a name="line9"></a> 9 end
|
610
|
-
</span><span class="inferred1"><a name="line10"></a> 10
|
611
|
-
</span><span class="marked0"><a name="line11"></a> 11 SCOPE_KEYS = [:controller, :action, :id]
|
612
|
-
</span><span class="inferred1"><a name="line12"></a> 12
|
613
|
-
</span><span class="marked0"><a name="line13"></a> 13 mattr_accessor :local_cache
|
614
|
-
</span><span class="inferred1"><a name="line14"></a> 14
|
615
|
-
</span><span class="marked0"><a name="line15"></a> 15 class << self
|
616
|
-
</span><span class="inferred1"><a name="line16"></a> 16 #
|
617
|
-
</span><span class="inferred0"><a name="line17"></a> 17 # Extract the dependencies from the rest of the arguments and registers
|
618
|
-
</span><span class="inferred1"><a name="line18"></a> 18 # them with the appropriate models.
|
619
|
-
</span><span class="inferred0"><a name="line19"></a> 19 #
|
620
|
-
</span><span class="marked1"><a name="line20"></a> 20 def extract_options_and_dependencies(dependencies, default = nil)
|
621
|
-
</span><span class="marked0"><a name="line21"></a> 21 options = dependencies.extract_options!
|
622
|
-
</span><span class="inferred1"><a name="line22"></a> 22
|
623
|
-
</span><span class="inferred0"><a name="line23"></a> 23 # Hook up the dependencies nested array.
|
624
|
-
</span><span class="marked1"><a name="line24"></a> 24 dependencies.map! { |klass| [klass, :all] }
|
625
|
-
</span><span class="marked0"><a name="line25"></a> 25 options.each do |klass, scope|
|
626
|
-
</span><span class="marked1"><a name="line26"></a> 26 if klass.is_a? Class
|
627
|
-
</span><span class="inferred0"><a name="line27"></a> 27 #
|
628
|
-
</span><span class="inferred1"><a name="line28"></a> 28 # Beware! Scoping to :id means that a request's params[:id] must equal
|
629
|
-
</span><span class="inferred0"><a name="line29"></a> 29 # klass#id or the rule will not trigger. This is because params[:id] is the
|
630
|
-
</span><span class="inferred1"><a name="line30"></a> 30 # only record-specific scope include in the key.
|
631
|
-
</span><span class="inferred0"><a name="line31"></a> 31 #
|
632
|
-
</span><span class="inferred1"><a name="line32"></a> 32 # If you want fancier invalidation, think hard about whether it really
|
633
|
-
</span><span class="inferred0"><a name="line33"></a> 33 # matters. Over-invalidation is rarely a problem, but under-invalidation
|
634
|
-
</span><span class="inferred1"><a name="line34"></a> 34 # frequently is.
|
635
|
-
</span><span class="inferred0"><a name="line35"></a> 35 #
|
636
|
-
</span><span class="inferred1"><a name="line36"></a> 36 # "But I need it!" you say. All right, then start using key tags.
|
637
|
-
</span><span class="inferred0"><a name="line37"></a> 37 #
|
638
|
-
</span><span class="marked1"><a name="line38"></a> 38 raise Interlock::DependencyError, "#{scope.inspect} is not a valid scope" unless [:all, :id].include?(scope)
|
639
|
-
</span><span class="marked0"><a name="line39"></a> 39 dependencies << [klass, scope.to_sym]
|
640
|
-
</span><span class="inferred1"><a name="line40"></a> 40 end
|
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="marked0"><a name="line43"></a> 43 unless dependencies.any?
|
644
|
-
</span><span class="inferred1"><a name="line44"></a> 44 # Use the conventional controller/model association if none are provided
|
645
|
-
</span><span class="inferred0"><a name="line45"></a> 45 # Can be skipped by calling caching(nil)
|
646
|
-
</span><span class="marked1"><a name="line46"></a> 46 dependencies = [[default, :all]]
|
647
|
-
</span><span class="inferred0"><a name="line47"></a> 47 end
|
648
|
-
</span><span class="inferred1"><a name="line48"></a> 48
|
649
|
-
</span><span class="inferred0"><a name="line49"></a> 49 # Remove nils
|
650
|
-
</span><span class="marked1"><a name="line50"></a> 50 dependencies.reject! {|klass, scope| klass.nil? }
|
651
|
-
</span><span class="inferred0"><a name="line51"></a> 51
|
652
|
-
</span><span class="marked1"><a name="line52"></a> 52 [options.indifferentiate, dependencies]
|
653
|
-
</span><span class="inferred0"><a name="line53"></a> 53 end
|
654
|
-
</span><span class="inferred1"><a name="line54"></a> 54
|
655
|
-
</span><span class="inferred0"><a name="line55"></a> 55 #
|
656
|
-
</span><span class="inferred1"><a name="line56"></a> 56 # Add each key with scope to the appropriate dependencies array.
|
657
|
-
</span><span class="inferred0"><a name="line57"></a> 57 #
|
658
|
-
</span><span class="marked1"><a name="line58"></a> 58 def register_dependencies(dependencies, key)
|
659
|
-
</span><span class="marked0"><a name="line59"></a> 59 Array(dependencies).each do |klass, scope|
|
660
|
-
</span><span class="marked1"><a name="line60"></a> 60 dep_key = dependency_key(klass)
|
661
|
-
</span><span class="inferred0"><a name="line61"></a> 61
|
662
|
-
</span><span class="inferred1"><a name="line62"></a> 62 # Get the value for this class/key out of the global store.
|
663
|
-
</span><span class="marked0"><a name="line63"></a> 63 this = (CACHE.get(dep_key) || {})[key]
|
664
|
-
</span><span class="inferred1"><a name="line64"></a> 64
|
665
|
-
</span><span class="inferred0"><a name="line65"></a> 65 # Make sure to not overwrite broader scopes.
|
666
|
-
</span><span class="marked1"><a name="line66"></a> 66 unless this == :all or this == scope
|
667
|
-
</span><span class="inferred0"><a name="line67"></a> 67 # We need to write, so acquire the lock.
|
668
|
-
</span><span class="marked1"><a name="line68"></a> 68 CACHE.lock(dep_key) do |hash|
|
669
|
-
</span><span class="marked0"><a name="line69"></a> 69 Interlock.say key, "registered a dependency on #{klass} -> #{scope.inspect}."
|
670
|
-
</span><span class="marked1"><a name="line70"></a> 70 (hash || {}).merge({key => scope})
|
671
|
-
</span><span class="inferred0"><a name="line71"></a> 71 end
|
672
|
-
</span><span class="inferred1"><a name="line72"></a> 72 end
|
673
|
-
</span><span class="inferred0"><a name="line73"></a> 73
|
674
|
-
</span><span class="inferred1"><a name="line74"></a> 74 end
|
675
|
-
</span><span class="marked0"><a name="line75"></a> 75 end
|
676
|
-
</span><span class="inferred1"><a name="line76"></a> 76
|
677
|
-
</span><span class="marked0"><a name="line77"></a> 77 def say(key, msg) #:nodoc:
|
678
|
-
</span><span class="marked1"><a name="line78"></a> 78 RAILS_DEFAULT_LOGGER.warn "** fragment #{key.inspect[1..-2]} #{msg}"
|
679
|
-
</span><span class="marked0"><a name="line79"></a> 79 end
|
680
|
-
</span><span class="inferred1"><a name="line80"></a> 80
|
681
|
-
</span><span class="inferred0"><a name="line81"></a> 81 #
|
682
|
-
</span><span class="inferred1"><a name="line82"></a> 82 # Get the Memcached key for a class's dependency list. We store per-class
|
683
|
-
</span><span class="inferred0"><a name="line83"></a> 83 # to reduce lock contention.
|
684
|
-
</span><span class="inferred1"><a name="line84"></a> 84 #
|
685
|
-
</span><span class="marked0"><a name="line85"></a> 85 def dependency_key(klass)
|
686
|
-
</span><span class="marked1"><a name="line86"></a> 86 "interlock:#{ENV['RAILS_ASSET_ID']}:dependency:#{klass.name}"
|
687
|
-
</span><span class="marked0"><a name="line87"></a> 87 end
|
688
|
-
</span><span class="inferred1"><a name="line88"></a> 88
|
689
|
-
</span><span class="inferred0"><a name="line89"></a> 89 #
|
690
|
-
</span><span class="inferred1"><a name="line90"></a> 90 # Build a fragment key for an explicitly passed context. Shouldn't be called
|
691
|
-
</span><span class="inferred0"><a name="line91"></a> 91 # unless you need to write your own fine-grained invalidation rules. Make sure
|
692
|
-
</span><span class="inferred1"><a name="line92"></a> 92 # the default ones are really unacceptable before you go to the trouble of
|
693
|
-
</span><span class="inferred0"><a name="line93"></a> 93 # rolling your own.
|
694
|
-
</span><span class="inferred1"><a name="line94"></a> 94 #
|
695
|
-
</span><span class="marked0"><a name="line95"></a> 95 def caching_key(controller, action, id, tag)
|
696
|
-
</span><span class="marked1"><a name="line96"></a> 96 raise ArgumentError, "Both controller and action must be specified" unless controller and action
|
697
|
-
</span><span class="inferred0"><a name="line97"></a> 97
|
698
|
-
</span><span class="marked1"><a name="line98"></a> 98 id = (id or 'all').to_interlock_tag
|
699
|
-
</span><span class="marked0"><a name="line99"></a> 99 tag = tag.to_interlock_tag
|
700
|
-
</span><span class="inferred1"><a name="line100"></a>100
|
701
|
-
</span><span class="marked0"><a name="line101"></a>101 "interlock:#{ENV['RAILS_ASSET_ID']}:#{controller}:#{action}:#{id}:#{tag}"
|
702
|
-
</span><span class="inferred1"><a name="line102"></a>102 end
|
703
|
-
</span><span class="inferred0"><a name="line103"></a>103
|
704
|
-
</span><span class="inferred1"><a name="line104"></a>104 #
|
705
|
-
</span><span class="inferred0"><a name="line105"></a>105 # Invalidate a particular key.
|
706
|
-
</span><span class="inferred1"><a name="line106"></a>106 #
|
707
|
-
</span><span class="marked0"><a name="line107"></a>107 def invalidate(key)
|
708
|
-
</span><span class="marked1"><a name="line108"></a>108 ActionController::Base.fragment_cache_store.delete key
|
709
|
-
</span><span class="marked0"><a name="line109"></a>109 end
|
710
|
-
</span><span class="inferred1"><a name="line110"></a>110
|
711
|
-
</span><span class="inferred0"><a name="line111"></a>111 end
|
712
|
-
</span><span class="inferred1"><a name="line112"></a>112 end
|
713
|
-
</span></pre><hr/>
|
714
|
-
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
715
|
-
version 0.8.1.2.</p>
|
716
|
-
<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'/>
|
717
|
-
</a>
|
718
|
-
<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'/>
|
719
|
-
</a>
|
720
|
-
</p>
|
721
|
-
</body>
|
722
|
-
</html>
|