slug-engine 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/README.rdoc +22 -3
  2. data/app/rack/dispatcher.rb +64 -0
  3. data/config/routes.rb +2 -2
  4. data/lib/slug.rb +0 -1
  5. data/lib/slug/engine.rb +0 -3
  6. data/lib/slug/version.rb +1 -1
  7. data/test/dummy/app/controllers/posts_controller.rb +6 -4
  8. data/test/dummy/db/development.sqlite3 +0 -0
  9. data/test/dummy/log/development.log +7605 -0
  10. data/test/dummy/tmp/cache/assets/C06/A00/sprockets%2Fe8698635e3a42938c23078559237f054 +0 -0
  11. data/test/dummy/tmp/cache/assets/C31/1C0/sprockets%2F782bb3033328116a00928cf121c48a01 +0 -0
  12. data/test/dummy/tmp/cache/assets/C83/E40/sprockets%2Fdb6878130b1939c0726e4829b1e0b088 +0 -0
  13. data/test/dummy/tmp/cache/assets/C8C/0B0/sprockets%2F619537e97de31591f189aaf1035b3495 +0 -0
  14. data/test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
  15. data/test/dummy/tmp/cache/assets/CAA/620/sprockets%2F87b209c0c9da28094a8d5581a21262c6 +0 -0
  16. data/test/dummy/tmp/cache/assets/CC7/220/sprockets%2Fd066c004d1fd26ae76a61303a7a18145 +0 -0
  17. data/test/dummy/tmp/cache/assets/CD5/B70/sprockets%2F416150dc3ac35079c94273cc46e90aa6 +0 -0
  18. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  19. data/test/dummy/tmp/cache/assets/CD8/B70/sprockets%2F4050a4e5062ab95c9f32e9b6940821ea +0 -0
  20. data/test/dummy/tmp/cache/assets/CDF/070/sprockets%2F70e3c8a3916622c17858d520dcee0d92 +0 -0
  21. data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
  22. data/test/dummy/tmp/cache/assets/D04/CD0/sprockets%2F31507dbccf7cba1b7324d2e065776561 +0 -0
  23. data/test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4 +0 -0
  24. data/test/dummy/tmp/cache/assets/D1A/310/sprockets%2F5384ad85f52d3272dbc64d46ef3876a4 +0 -0
  25. data/test/dummy/tmp/cache/assets/D2E/110/sprockets%2F1f206deeb0e375c46aeb1c261781b254 +0 -0
  26. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  27. data/test/dummy/tmp/cache/assets/D46/650/sprockets%2Ff56253b5f374fff1a33fbbc9881c9124 +0 -0
  28. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  29. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
  30. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  31. data/test/dummy/tmp/cache/assets/D67/B60/sprockets%2F5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
  32. data/test/dummy/tmp/cache/assets/D73/220/sprockets%2F3dbc0a37f98fb43ec819b85a64d32c55 +0 -0
  33. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +2 -2
  34. data/test/dummy/tmp/cache/assets/D8C/530/sprockets%2Fcdcbe0310d6fd0720e61f751bb655ad6 +0 -0
  35. data/test/dummy/tmp/cache/assets/D90/A60/sprockets%2Fd66c840cd4aecd0a19194e3170df4a2c +0 -0
  36. data/test/dummy/tmp/cache/assets/D94/980/sprockets%2F2373f211d11e64dbff45ce4d5e6da3f1 +0 -0
  37. data/test/dummy/tmp/cache/assets/D9C/CD0/sprockets%2Fc85016e7bbd4f3adbb7635d01f85d39b +0 -0
  38. data/test/dummy/tmp/cache/assets/DA9/510/sprockets%2F44a53ee4e5c28bf64993d4b7bfda1a79 +0 -0
  39. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  40. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  41. data/test/dummy/tmp/cache/assets/E05/500/sprockets%2F98aed5b7ad9b7baab0e86b438a6438ed +0 -0
  42. data/test/dummy/tmp/cache/assets/E06/920/sprockets%2F6baa37d1c26468aef4fe5fe4bf982fa3 +0 -0
  43. data/test/dummy/tmp/cache/assets/E46/640/sprockets%2Fd327c0df3d6aebfc1fd0ac5ca5c05e14 +0 -0
  44. data/test/dummy/tmp/cache/assets/E7C/9B0/sprockets%2Ffbaf5adc86d5bacaa09e479bb0b6b13a +0 -0
  45. metadata +54 -14
  46. data/app/controllers/permalinks_controller.rb +0 -45
  47. data/app/helpers/permalinks_helper.rb +0 -2
  48. data/lib/slug/filter.rb +0 -33
@@ -1,4 +1,4 @@
1
- o: ActiveSupport::Cache::Entry :@compressedF: @value{ "
1
+ o: ActiveSupport::Cache::Entry :@compressedF: @value{ "
2
2
  * jQuery JavaScript Library v1.6.4
3
3
  * http://jquery.com/
4
4
  *
@@ -9426,4 +9426,4 @@ window.jQuery = window.$ = jQuery;
9426
9426
  // the compiled file.
9427
9427
  //
9428
9428
  ;
9429
- :@created_atf1321228125.0038559?-:@expires_in0
9429
+ :@created_atf1338129525.937351��:@expires_in0
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slug-engine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 3
10
- version: 0.0.3
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jarrod Carlson
@@ -15,14 +15,15 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-08 00:00:00 Z
18
+ date: 2012-05-27 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- type: :runtime
21
+ name: rails
22
+ prerelease: false
22
23
  requirement: &id001 !ruby/object:Gem::Requirement
23
24
  none: false
24
25
  requirements:
25
- - - ~>
26
+ - - ">="
26
27
  - !ruby/object:Gem::Version
27
28
  hash: 1
28
29
  segments:
@@ -30,11 +31,11 @@ dependencies:
30
31
  - 1
31
32
  - 1
32
33
  version: 3.1.1
34
+ type: :runtime
33
35
  version_requirements: *id001
34
- prerelease: false
35
- name: rails
36
36
  - !ruby/object:Gem::Dependency
37
- type: :development
37
+ name: sqlite3
38
+ prerelease: false
38
39
  requirement: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
@@ -44,9 +45,8 @@ dependencies:
44
45
  segments:
45
46
  - 0
46
47
  version: "0"
48
+ type: :development
47
49
  version_requirements: *id002
48
- prerelease: false
49
- name: sqlite3
50
50
  description: Rails Engine for permalinks
51
51
  email:
52
52
  - jarrod.carlson@gmail.com
@@ -57,14 +57,12 @@ extensions: []
57
57
  extra_rdoc_files: []
58
58
 
59
59
  files:
60
- - app/controllers/permalinks_controller.rb
61
- - app/helpers/permalinks_helper.rb
62
60
  - app/helpers/slug_helper.rb
63
61
  - app/models/permalink.rb
62
+ - app/rack/dispatcher.rb
64
63
  - config/routes.rb
65
64
  - db/migrate/20111108194929_create_permalinks.rb
66
65
  - lib/slug/engine.rb
67
- - lib/slug/filter.rb
68
66
  - lib/slug/version.rb
69
67
  - lib/slug-engine.rb
70
68
  - lib/slug.rb
@@ -136,35 +134,56 @@ files:
136
134
  - test/dummy/test/unit/post_test.rb
137
135
  - test/dummy/test/unit/user_test.rb
138
136
  - test/dummy/tmp/cache/assets/C06/A00/sprockets%2Fe8698635e3a42938c23078559237f054
137
+ - test/dummy/tmp/cache/assets/C31/1C0/sprockets%2F782bb3033328116a00928cf121c48a01
138
+ - test/dummy/tmp/cache/assets/C83/E40/sprockets%2Fdb6878130b1939c0726e4829b1e0b088
139
+ - test/dummy/tmp/cache/assets/C8C/0B0/sprockets%2F619537e97de31591f189aaf1035b3495
140
+ - test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212
139
141
  - test/dummy/tmp/cache/assets/CAA/620/sprockets%2F87b209c0c9da28094a8d5581a21262c6
140
142
  - test/dummy/tmp/cache/assets/CAA/C50/sprockets%2F3173be70d508b937064ce74b7363d13b
143
+ - test/dummy/tmp/cache/assets/CC7/220/sprockets%2Fd066c004d1fd26ae76a61303a7a18145
141
144
  - test/dummy/tmp/cache/assets/CC7/5F0/sprockets%2F8bf37168fb70e08b9e4578e72739a543
145
+ - test/dummy/tmp/cache/assets/CD5/B70/sprockets%2F416150dc3ac35079c94273cc46e90aa6
146
+ - test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
147
+ - test/dummy/tmp/cache/assets/CD8/B70/sprockets%2F4050a4e5062ab95c9f32e9b6940821ea
142
148
  - test/dummy/tmp/cache/assets/CDA/250/sprockets%2F9f6ba51c401a4b1885146d692f56dd20
143
149
  - test/dummy/tmp/cache/assets/CDF/070/sprockets%2F70e3c8a3916622c17858d520dcee0d92
144
150
  - test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2
145
151
  - test/dummy/tmp/cache/assets/D03/AF0/sprockets%2F79009b48c13f7b213134c8ac51caf65b
152
+ - test/dummy/tmp/cache/assets/D04/CD0/sprockets%2F31507dbccf7cba1b7324d2e065776561
146
153
  - test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4
147
154
  - test/dummy/tmp/cache/assets/D1A/310/sprockets%2F5384ad85f52d3272dbc64d46ef3876a4
148
155
  - test/dummy/tmp/cache/assets/D23/E70/sprockets%2F8de174e8fa8a6828ee7fa348335900f4
149
156
  - test/dummy/tmp/cache/assets/D2E/090/sprockets%2Fc54283e81ce52bf9d542ab12492a01ad
157
+ - test/dummy/tmp/cache/assets/D2E/110/sprockets%2F1f206deeb0e375c46aeb1c261781b254
150
158
  - test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
151
159
  - test/dummy/tmp/cache/assets/D36/030/sprockets%2F63bdbca18172eaab4b20628e4399d663
152
160
  - test/dummy/tmp/cache/assets/D3E/B20/sprockets%2F1f79ee84bd6d74d100c5cb018b662b67
153
161
  - test/dummy/tmp/cache/assets/D46/650/sprockets%2Ff56253b5f374fff1a33fbbc9881c9124
162
+ - test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
154
163
  - test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4
164
+ - test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
165
+ - test/dummy/tmp/cache/assets/D67/B60/sprockets%2F5f1a0d05e77ca8b9a1fc2a47e17a8174
155
166
  - test/dummy/tmp/cache/assets/D6C/450/sprockets%2Fb5a9c753f78c4fb270358b5b3d0ddb24
156
167
  - test/dummy/tmp/cache/assets/D73/220/sprockets%2F3dbc0a37f98fb43ec819b85a64d32c55
157
168
  - test/dummy/tmp/cache/assets/D74/690/sprockets%2F8ce828da6803d77571ba4bd2ce297b4b
158
169
  - test/dummy/tmp/cache/assets/D7A/370/sprockets%2Fea1283f2c7d533c8f65de7e03f7f92d3
159
170
  - test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384
171
+ - test/dummy/tmp/cache/assets/D8C/530/sprockets%2Fcdcbe0310d6fd0720e61f751bb655ad6
172
+ - test/dummy/tmp/cache/assets/D90/A60/sprockets%2Fd66c840cd4aecd0a19194e3170df4a2c
173
+ - test/dummy/tmp/cache/assets/D94/980/sprockets%2F2373f211d11e64dbff45ce4d5e6da3f1
160
174
  - test/dummy/tmp/cache/assets/D9B/9C0/sprockets%2F4e197c078b17aea1ec1df9746ddf2a30
161
175
  - test/dummy/tmp/cache/assets/D9C/CD0/sprockets%2Fc85016e7bbd4f3adbb7635d01f85d39b
162
176
  - test/dummy/tmp/cache/assets/DA1/4A0/sprockets%2Fb398851b563c62cf3bf4cbbad8c57d25
177
+ - test/dummy/tmp/cache/assets/DA9/510/sprockets%2F44a53ee4e5c28bf64993d4b7bfda1a79
163
178
  - test/dummy/tmp/cache/assets/DBA/AB0/sprockets%2F8be4208fd77cb5ef9b6f77e5fcf18670
164
179
  - test/dummy/tmp/cache/assets/DC0/870/sprockets%2F289d3a70441ad26d24edcd25fd0dca6c
180
+ - test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
165
181
  - test/dummy/tmp/cache/assets/E03/E80/sprockets%2F4a6c93824e15c2d5fdfbbbf7cfdc3646
166
182
  - test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
183
+ - test/dummy/tmp/cache/assets/E05/500/sprockets%2F98aed5b7ad9b7baab0e86b438a6438ed
167
184
  - test/dummy/tmp/cache/assets/E06/920/sprockets%2F6baa37d1c26468aef4fe5fe4bf982fa3
185
+ - test/dummy/tmp/cache/assets/E46/640/sprockets%2Fd327c0df3d6aebfc1fd0ac5ca5c05e14
186
+ - test/dummy/tmp/cache/assets/E7C/9B0/sprockets%2Ffbaf5adc86d5bacaa09e479bb0b6b13a
168
187
  - test/slug_test.rb
169
188
  - test/test_helper.rb
170
189
  homepage: https://github.com/jcarlson/slug-engine
@@ -265,34 +284,55 @@ test_files:
265
284
  - test/dummy/test/unit/post_test.rb
266
285
  - test/dummy/test/unit/user_test.rb
267
286
  - test/dummy/tmp/cache/assets/C06/A00/sprockets%2Fe8698635e3a42938c23078559237f054
287
+ - test/dummy/tmp/cache/assets/C31/1C0/sprockets%2F782bb3033328116a00928cf121c48a01
288
+ - test/dummy/tmp/cache/assets/C83/E40/sprockets%2Fdb6878130b1939c0726e4829b1e0b088
289
+ - test/dummy/tmp/cache/assets/C8C/0B0/sprockets%2F619537e97de31591f189aaf1035b3495
290
+ - test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212
268
291
  - test/dummy/tmp/cache/assets/CAA/620/sprockets%2F87b209c0c9da28094a8d5581a21262c6
269
292
  - test/dummy/tmp/cache/assets/CAA/C50/sprockets%2F3173be70d508b937064ce74b7363d13b
293
+ - test/dummy/tmp/cache/assets/CC7/220/sprockets%2Fd066c004d1fd26ae76a61303a7a18145
270
294
  - test/dummy/tmp/cache/assets/CC7/5F0/sprockets%2F8bf37168fb70e08b9e4578e72739a543
295
+ - test/dummy/tmp/cache/assets/CD5/B70/sprockets%2F416150dc3ac35079c94273cc46e90aa6
296
+ - test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
297
+ - test/dummy/tmp/cache/assets/CD8/B70/sprockets%2F4050a4e5062ab95c9f32e9b6940821ea
271
298
  - test/dummy/tmp/cache/assets/CDA/250/sprockets%2F9f6ba51c401a4b1885146d692f56dd20
272
299
  - test/dummy/tmp/cache/assets/CDF/070/sprockets%2F70e3c8a3916622c17858d520dcee0d92
273
300
  - test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2
274
301
  - test/dummy/tmp/cache/assets/D03/AF0/sprockets%2F79009b48c13f7b213134c8ac51caf65b
302
+ - test/dummy/tmp/cache/assets/D04/CD0/sprockets%2F31507dbccf7cba1b7324d2e065776561
275
303
  - test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4
276
304
  - test/dummy/tmp/cache/assets/D1A/310/sprockets%2F5384ad85f52d3272dbc64d46ef3876a4
277
305
  - test/dummy/tmp/cache/assets/D23/E70/sprockets%2F8de174e8fa8a6828ee7fa348335900f4
278
306
  - test/dummy/tmp/cache/assets/D2E/090/sprockets%2Fc54283e81ce52bf9d542ab12492a01ad
307
+ - test/dummy/tmp/cache/assets/D2E/110/sprockets%2F1f206deeb0e375c46aeb1c261781b254
279
308
  - test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
280
309
  - test/dummy/tmp/cache/assets/D36/030/sprockets%2F63bdbca18172eaab4b20628e4399d663
281
310
  - test/dummy/tmp/cache/assets/D3E/B20/sprockets%2F1f79ee84bd6d74d100c5cb018b662b67
282
311
  - test/dummy/tmp/cache/assets/D46/650/sprockets%2Ff56253b5f374fff1a33fbbc9881c9124
312
+ - test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
283
313
  - test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4
314
+ - test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
315
+ - test/dummy/tmp/cache/assets/D67/B60/sprockets%2F5f1a0d05e77ca8b9a1fc2a47e17a8174
284
316
  - test/dummy/tmp/cache/assets/D6C/450/sprockets%2Fb5a9c753f78c4fb270358b5b3d0ddb24
285
317
  - test/dummy/tmp/cache/assets/D73/220/sprockets%2F3dbc0a37f98fb43ec819b85a64d32c55
286
318
  - test/dummy/tmp/cache/assets/D74/690/sprockets%2F8ce828da6803d77571ba4bd2ce297b4b
287
319
  - test/dummy/tmp/cache/assets/D7A/370/sprockets%2Fea1283f2c7d533c8f65de7e03f7f92d3
288
320
  - test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384
321
+ - test/dummy/tmp/cache/assets/D8C/530/sprockets%2Fcdcbe0310d6fd0720e61f751bb655ad6
322
+ - test/dummy/tmp/cache/assets/D90/A60/sprockets%2Fd66c840cd4aecd0a19194e3170df4a2c
323
+ - test/dummy/tmp/cache/assets/D94/980/sprockets%2F2373f211d11e64dbff45ce4d5e6da3f1
289
324
  - test/dummy/tmp/cache/assets/D9B/9C0/sprockets%2F4e197c078b17aea1ec1df9746ddf2a30
290
325
  - test/dummy/tmp/cache/assets/D9C/CD0/sprockets%2Fc85016e7bbd4f3adbb7635d01f85d39b
291
326
  - test/dummy/tmp/cache/assets/DA1/4A0/sprockets%2Fb398851b563c62cf3bf4cbbad8c57d25
327
+ - test/dummy/tmp/cache/assets/DA9/510/sprockets%2F44a53ee4e5c28bf64993d4b7bfda1a79
292
328
  - test/dummy/tmp/cache/assets/DBA/AB0/sprockets%2F8be4208fd77cb5ef9b6f77e5fcf18670
293
329
  - test/dummy/tmp/cache/assets/DC0/870/sprockets%2F289d3a70441ad26d24edcd25fd0dca6c
330
+ - test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
294
331
  - test/dummy/tmp/cache/assets/E03/E80/sprockets%2F4a6c93824e15c2d5fdfbbbf7cfdc3646
295
332
  - test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
333
+ - test/dummy/tmp/cache/assets/E05/500/sprockets%2F98aed5b7ad9b7baab0e86b438a6438ed
296
334
  - test/dummy/tmp/cache/assets/E06/920/sprockets%2F6baa37d1c26468aef4fe5fe4bf982fa3
335
+ - test/dummy/tmp/cache/assets/E46/640/sprockets%2Fd327c0df3d6aebfc1fd0ac5ca5c05e14
336
+ - test/dummy/tmp/cache/assets/E7C/9B0/sprockets%2Ffbaf5adc86d5bacaa09e479bb0b6b13a
297
337
  - test/slug_test.rb
298
338
  - test/test_helper.rb
@@ -1,45 +0,0 @@
1
- class PermalinksController < ApplicationController
2
-
3
- # TODO: Need to figure out how to handle slugs with extensions, e.g., 'foo/bar/baz.jpg'
4
- def show
5
- # find permalink, raising error if none found
6
- @permalink = Permalink.find_by_slug!(params[:slug])
7
-
8
- # find content by permalink, raising error if none found
9
- @content = content_class.find_by_permalink!(@permalink)
10
- @content_type = @permalink.content_type
11
-
12
- # customize view path based on content_type
13
- prepend_view_path "app/views/#{@content_type.pluralize.underscore}"
14
-
15
- # set params[:controller] to match model of content
16
- params[:controller] = @content_type.pluralize.underscore
17
-
18
- # render the appropriate partial for this content, and do it in the layout
19
- render :partial => partial, :object => decorate(@content), :layout => true
20
-
21
- end
22
-
23
- protected
24
-
25
- def content_class
26
- @permalink.content_type.constantize
27
- end
28
-
29
- # TODO: Make this an application-extension, not built-in
30
- def decorate(content)
31
- decorated = begin
32
- Module.const_get("#{@content_type}Decorator").decorate(content)
33
- rescue NameError
34
- content
35
- end
36
- decorated
37
- end
38
-
39
- def partial
40
- # We're going to have to make a guess about this...
41
- # TODO: Is there some way to still defer to the partial renderer to determine the partial to use?
42
- "#{@content_type.downcase.pluralize}/#{@content_type.downcase}"
43
- end
44
-
45
- end
@@ -1,2 +0,0 @@
1
- module PermalinksHelper
2
- end
@@ -1,33 +0,0 @@
1
- module Slug
2
-
3
- # This middleware is necessary so that the engine can abstain from processing
4
- # requests where no such slug exists. If this behavior were done in a
5
- # controller, Rails would heavily mutate the request object and no additional
6
- # controllers would have much luck processing the request. Specifically, the
7
- # named parameters for the route are cached on the request, and downstream
8
- # controllers would get the wrong params hash.
9
-
10
- class Filter
11
-
12
- def initialize(app)
13
- @app = app
14
- end
15
-
16
- def call(env)
17
- # if a matching slug exists in the database, allow engine to process it
18
- if Permalink.where('slug = ?', slug(env['PATH_INFO'])).exists?
19
- # slug found, allow request to continue to controller
20
- @app.call(env)
21
- else
22
- # no slug matched, abstain from handling request
23
- [404, {"X-Cascade" => "pass"}, ["no such slug exists"]]
24
- end
25
- end
26
-
27
- # Extract the :slug value from the raw request
28
- def slug(path)
29
- path.match(/^(?:\/)?([^.]+)(?:\..*)?/)[1]
30
- end
31
-
32
- end
33
- end