Capcode 0.8.6 → 0.8.7

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.
Files changed (37) hide show
  1. data/README.rdoc +72 -1
  2. data/doc/rdoc/classes/Capcode.html +549 -444
  3. data/doc/rdoc/classes/Capcode/Helpers.html +293 -133
  4. data/doc/rdoc/classes/Capcode/Helpers/Authorization.html +60 -29
  5. data/doc/rdoc/created.rid +1 -1
  6. data/doc/rdoc/files/README_rdoc.html +94 -8
  7. data/doc/rdoc/files/lib/capcode/configuration_rb.html +101 -0
  8. data/doc/rdoc/files/lib/capcode/helpers/auth_rb.html +1 -32
  9. data/doc/rdoc/files/lib/capcode/render/erb_rb.html +1 -1
  10. data/doc/rdoc/files/lib/capcode/render/haml_rb.html +1 -1
  11. data/doc/rdoc/files/lib/capcode/render/markaby_rb.html +1 -1
  12. data/doc/rdoc/files/lib/capcode/render/sass_rb.html +1 -1
  13. data/doc/rdoc/files/lib/capcode/render/text_rb.html +1 -1
  14. data/doc/rdoc/files/lib/capcode_rb.html +8 -1
  15. data/doc/rdoc/fr_file_index.html +1 -0
  16. data/doc/rdoc/fr_method_index.html +19 -11
  17. data/examples/blog-couchdb.rb +4 -3
  18. data/examples/erb/cf.rhtml +1 -0
  19. data/examples/haml/cf.haml +4 -1
  20. data/examples/render-erb.rb +4 -1
  21. data/examples/render-haml_sass.rb +6 -2
  22. data/examples/render-image.rb +70 -0
  23. data/examples/render-static.rb +4 -1
  24. data/examples/render-static.ru +0 -2
  25. data/examples/render-use.rb +31 -0
  26. data/examples/static/coderay.css +131 -0
  27. data/examples/static/index.html +19 -0
  28. data/lib/capcode.rb +125 -76
  29. data/lib/capcode/configuration.rb +39 -0
  30. data/lib/capcode/helpers/auth.rb +22 -23
  31. data/lib/capcode/render/erb.rb +25 -18
  32. data/lib/capcode/render/haml.rb +28 -19
  33. data/lib/capcode/render/markaby.rb +2 -1
  34. data/lib/capcode/render/sass.rb +19 -13
  35. data/lib/capcode/render/text.rb +1 -1
  36. data/lib/capcode/version.rb +1 -1
  37. metadata +8 -2
@@ -12,6 +12,12 @@ Capcode is a web microframework
12
12
 
13
13
  == FEATURES/PROBLEMS:
14
14
 
15
+ === 0.8.7
16
+ * Route's captures are now passed to all methods in a coontroller
17
+ * Add :content_type option to renderers (see render-image.rb)
18
+ * Add Capcode.set for configuration. So Capcode::Herpers#erb_path=, Capcode::Herpers#sass_path= and Capcode::Herpers#haml_path= are deprecated, you must now use `set :erb, ...', `set :sass, ...' and `set :haml, ...' (see render-erb.rb and render-haml_sass.rb)
19
+ * Add Capcode.use to allow usage of Rack middlewares (see render-use.rb)
20
+
15
21
  === 0.8.6
16
22
  * HUGE bug correction
17
23
 
@@ -291,7 +297,72 @@ See <tt>examples/blog-dm.rb</tt> and/or <tt>examples/blog-couchdb.rb</tt> for co
291
297
 
292
298
  end
293
299
 
294
- Capcode.run( )
300
+ Capcode.run( )
301
+
302
+ === HTTP Authentication
303
+
304
+ # file: sample.rb
305
+ require 'rubygems'
306
+ require 'capcode'
307
+
308
+ module Capcode
309
+ class Public < Route '/public'
310
+ def get
311
+ render "This page is not protected"
312
+ end
313
+ end
314
+
315
+ class Private < Route '/private'
316
+ def get
317
+ http_authentication( :type => :digest, :realm => "Private part" ) {
318
+ { "greg" => "p4ssw0rd" }
319
+ }
320
+
321
+ render "This page is private - Hello #{request.env['REMOTE_USER']}"
322
+ end
323
+ end
324
+ end
325
+
326
+ Capcode.run( )
327
+
328
+ Second example :
329
+
330
+ # file: sample.rb
331
+ require 'rubygems'
332
+ require 'capcode'
333
+
334
+ module Capcode
335
+
336
+ http_authentication( :type => :digest, :realm => "Private part", :routes => ['/admin', '/private'] ) {
337
+ { "greg" => "p4ssw0rd" }
338
+ }
339
+
340
+ class Public < Route '/public'
341
+ def get
342
+ render "This page is not protected"
343
+ end
344
+ end
345
+
346
+ class Private < Route '/private'
347
+ def get
348
+ render "This page is private - Hello #{request.env['REMOTE_USER']}"
349
+ end
350
+ end
351
+
352
+ class PrivateAgain < Route '/private/again'
353
+ def get
354
+ render "This page is also private - Hello #{request.env['REMOTE_USER']}"
355
+ end
356
+ end
357
+
358
+ class Admin < Route '/admin'
359
+ def get
360
+ render "This page is private - Hello #{request.env['REMOTE_USER']}"
361
+ end
362
+ end
363
+ end
364
+
365
+ Capcode.run( )
295
366
 
296
367
  == DEPLOYMENT
297
368
 
@@ -62,6 +62,10 @@
62
62
  <a href="../files/lib/capcode/base/db_rb.html">
63
63
  lib/capcode/base/db.rb
64
64
  </a>
65
+ <br />
66
+ <a href="../files/lib/capcode/configuration_rb.html">
67
+ lib/capcode/configuration.rb
68
+ </a>
65
69
  <br />
66
70
  <a href="../files/lib/capcode/render/erb_rb.html">
67
71
  lib/capcode/render/erb.rb
@@ -116,37 +120,6 @@
116
120
 
117
121
  <div id="contextContent">
118
122
 
119
- <div id="description">
120
- <p>
121
- Because this helper was trully inspired by this post : <a
122
- href="http://www.gittr.com/index.php/archive/sinatra-basic-authentication-selectively-applied">www.gittr.com/index.php/archive/sinatra-basic-authentication-selectively-applied</a>/
123
- and because the code in this post was extracted out of Wink, this file
124
- follow the Wink license :
125
- </p>
126
- <p>
127
- Permission is hereby granted, free of charge, to any person obtaining a
128
- copy of this software and associated documentation files (the
129
- &quot;Software&quot;), to deal in the Software without restriction,
130
- including without limitation the rights to use, copy, modify, merge,
131
- publish, distribute, sublicense, and/or sell copies of the Software, and to
132
- permit persons to whom the Software is furnished to do so, subject to the
133
- following conditions:
134
- </p>
135
- <p>
136
- The above copyright notice and this permission notice shall be included in
137
- all copies or substantial portions of the Software.
138
- </p>
139
- <p>
140
- THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
141
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
142
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
143
- NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
144
- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
145
- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
146
- USE OR OTHER DEALINGS IN THE SOFTWARE.
147
- </p>
148
-
149
- </div>
150
123
 
151
124
 
152
125
  </div>
@@ -156,15 +129,18 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
156
129
 
157
130
  <div class="name-list">
158
131
  <a href="#M000001">Route</a>&nbsp;&nbsp;
159
- <a href="#M000009">application</a>&nbsp;&nbsp;
132
+ <a href="#M000010">application</a>&nbsp;&nbsp;
133
+ <a href="#M000013">config</a>&nbsp;&nbsp;
160
134
  <a href="#M000003">env</a>&nbsp;&nbsp;
161
- <a href="#M000008">http_authentication</a>&nbsp;&nbsp;
135
+ <a href="#M000009">http_authentication</a>&nbsp;&nbsp;
162
136
  <a href="#M000007">map</a>&nbsp;&nbsp;
163
137
  <a href="#M000002">params</a>&nbsp;&nbsp;
164
138
  <a href="#M000005">request</a>&nbsp;&nbsp;
165
139
  <a href="#M000006">response</a>&nbsp;&nbsp;
166
- <a href="#M000010">run</a>&nbsp;&nbsp;
140
+ <a href="#M000011">run</a>&nbsp;&nbsp;
167
141
  <a href="#M000004">session</a>&nbsp;&nbsp;
142
+ <a href="#M000012">set</a>&nbsp;&nbsp;
143
+ <a href="#M000008">use</a>&nbsp;&nbsp;
168
144
  </div>
169
145
  </div>
170
146
 
@@ -244,10 +220,12 @@ Add routes to a controller class
244
220
  <p>
245
221
  In the <tt>get</tt> method, you will receive the maximum of parameters
246
222
  declared by the routes. In this example, you will receive 2 parameters. So
247
- if you go to <tt>/hello/world#friend</tt> then <tt>arg1</tt> will be set to
248
- <tt>world</tt> and <tt>arg2</tt> will be set to <tt>friend</tt>. Now if you
249
- go to <tt>/hello/you</tt>, then <tt>arg1</tt> will be set to <tt>you</tt>
250
- and <tt>arg2</tt> will be set to <tt>nil</tt>
223
+ if you go to <tt>/hello/world#friend</tt> then <tt>arg1</tt> will be <a
224
+ href="Capcode.html#M000012">set</a> to <tt>world</tt> and <tt>arg2</tt>
225
+ will be <a href="Capcode.html#M000012">set</a> to <tt>friend</tt>. Now if
226
+ you go to <tt>/hello/you</tt>, then <tt>arg1</tt> will be <a
227
+ href="Capcode.html#M000012">set</a> to <tt>you</tt> and <tt>arg2</tt> will
228
+ be <a href="Capcode.html#M000012">set</a> to <tt>nil</tt>
251
229
  </p>
252
230
  <p>
253
231
  If the regexp in the route does not match, all arguments will be
@@ -257,179 +235,179 @@ If the regexp in the route does not match, all arguments will be
257
235
  onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
258
236
  <div class="method-source-code" id="M000001-source">
259
237
  <pre>
260
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 284</span>
261
- 284: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Route</span> <span class="ruby-operator">*</span><span class="ruby-identifier">routes_paths</span>
262
- 285: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
263
- 286: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>) {
264
- 287: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)', :agent =&gt; /Songbird (\d\.\d)[\d\/]*?/</span>
265
- 288: <span class="ruby-comment cmt"># # =&gt; [ {'/hello/world' =&gt; '([^\/]*)/id(\d*)', '/hello' =&gt; '(.*)'}, </span>
266
- 289: <span class="ruby-comment cmt"># 2, </span>
267
- 290: <span class="ruby-comment cmt"># &lt;Capcode::Klass&gt;, </span>
268
- 291: <span class="ruby-comment cmt"># {:agent =&gt; /Songbird (\d\.\d)[\d\/]*?/} ]</span>
269
- 292: <span class="ruby-identifier">hash_of_routes</span> = {}
270
- 293: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-value">0</span>
271
- 294: <span class="ruby-identifier">routes_paths</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
272
- 295: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_route_path</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
273
- 296: <span class="ruby-identifier">m</span> = <span class="ruby-regexp re">/\/([^\/]*\(.*)/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">current_route_path</span> )
274
- 297: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
275
- 298: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already defined with regexp `#{hash_of_routes[current_route_path]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
276
- 299: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-value str">''</span>
277
- 300: <span class="ruby-keyword kw">else</span>
278
- 301: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
279
- 302: <span class="ruby-identifier">_pre</span> = <span class="ruby-value str">&quot;/&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_pre</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
280
- 303: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{_pre}' already defined with regexp `#{hash_of_routes[_pre]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_pre</span>)
281
- 304: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">_pre</span>] = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]
282
- 305: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]).<span class="ruby-identifier">number_of_captures</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">max_captures_for_routes</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]).<span class="ruby-identifier">number_of_captures</span>
283
- 306: <span class="ruby-keyword kw">end</span>
284
- 307: <span class="ruby-keyword kw">else</span>
285
- 308: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">ParameterError</span>, <span class="ruby-value str">&quot;Bad route declaration !&quot;</span>, <span class="ruby-identifier">caller</span>
286
- 309: <span class="ruby-keyword kw">end</span>
287
- 310: <span class="ruby-keyword kw">end</span>
288
- 311: [<span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-keyword kw">self</span>]
289
- 312: }
290
- 313:
291
- 314: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
292
- 315: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
293
- 316: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
294
- 317: <span class="ruby-keyword kw">end</span>
295
- 318:
296
- 319: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
297
- 320: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
298
- 321: <span class="ruby-ivar">@env</span>
299
- 322: <span class="ruby-keyword kw">end</span>
300
- 323:
301
- 324: <span class="ruby-comment cmt"># Session hash</span>
302
- 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
303
- 326: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
304
- 327: <span class="ruby-keyword kw">end</span>
305
- 328:
306
- 329: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
307
- 330: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
308
- 331: <span class="ruby-ivar">@request</span>
309
- 332: <span class="ruby-keyword kw">end</span>
310
- 333:
311
- 334: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
312
- 335: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
313
- 336: <span class="ruby-ivar">@response</span>
314
- 337: <span class="ruby-keyword kw">end</span>
315
- 338:
316
- 339: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>( <span class="ruby-identifier">e</span> ) <span class="ruby-comment cmt">#:nodoc:</span>
317
- 340: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
318
- 341: <span class="ruby-ivar">@response</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Response</span>.<span class="ruby-identifier">new</span>
319
- 342: <span class="ruby-ivar">@request</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Request</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@env</span>)
320
- 343:
321
- 344: <span class="ruby-comment cmt"># __k = self.class.to_s.split( /::/ )[-1].downcase.to_sym</span>
322
- 345: <span class="ruby-comment cmt"># @@__FILTERS.each do |f|</span>
323
- 346: <span class="ruby-comment cmt"># proc = f.delete(:action)</span>
324
- 347: <span class="ruby-comment cmt"># __run = true</span>
325
- 348: <span class="ruby-comment cmt"># if f[:only]</span>
326
- 349: <span class="ruby-comment cmt"># __run = f[:only].include?(__k)</span>
327
- 350: <span class="ruby-comment cmt"># end</span>
328
- 351: <span class="ruby-comment cmt"># if f[:except]</span>
329
- 352: <span class="ruby-comment cmt"># __run = !f[:except].include?(__k)</span>
330
- 353: <span class="ruby-comment cmt"># end</span>
331
- 354: <span class="ruby-comment cmt"># </span>
332
- 355: <span class="ruby-comment cmt"># # proc.call(self) if __run</span>
333
- 356: <span class="ruby-comment cmt"># puts &quot;call #{proc} for #{__k}&quot;</span>
334
- 357: <span class="ruby-comment cmt"># end</span>
335
- 358:
336
- 359: <span class="ruby-comment cmt"># Check authz</span>
337
- 360: <span class="ruby-identifier">authz_options</span> = <span class="ruby-keyword kw">nil</span>
338
- 361: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span> <span class="ruby-keyword kw">and</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
339
- 362: <span class="ruby-identifier">authz_options</span> = <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>[<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">nil</span>
340
- 363: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
341
- 364: <span class="ruby-identifier">route</span> = <span class="ruby-keyword kw">nil</span>
342
- 365:
343
- 366: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span>, <span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
344
- 367: <span class="ruby-identifier">regexp</span> = <span class="ruby-node">&quot;^#{r.gsub(/\/$/, &quot;&quot;)}([/]{1}.*)?$&quot;</span>
345
- 368: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">regexp</span>).<span class="ruby-identifier">match</span>( <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span> )
346
- 369: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">size</span>
347
- 370: <span class="ruby-identifier">route</span> = <span class="ruby-identifier">r</span>
348
- 371: <span class="ruby-identifier">authz_options</span> = <span class="ruby-identifier">o</span>
349
- 372: <span class="ruby-keyword kw">end</span>
350
- 373: <span class="ruby-keyword kw">end</span>
351
- 374: <span class="ruby-keyword kw">end</span>
352
- 375: <span class="ruby-keyword kw">end</span>
353
- 376: <span class="ruby-keyword kw">end</span>
354
- 377:
355
- 378: <span class="ruby-identifier">r</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:halt</span>) {
356
- 379: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
357
- 380: <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:type</span>], <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>], <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>] ) {
358
- 381: <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:autz</span>]
359
- 382: }
360
- 383: <span class="ruby-keyword kw">end</span>
361
- 384:
362
- 385: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
363
- 386: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;GET&quot;</span>
364
- 387: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
365
- 388: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
366
- 389: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
367
- 390:
368
- 391: <span class="ruby-identifier">aPath</span> = <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">&quot;/&quot;</span> )
369
- 392: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span>, <span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
370
- 393: <span class="ruby-identifier">xPath</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">&quot;/&quot;</span> )
371
- 394: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">aPath</span>).<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
372
- 395: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
373
- 396: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span>
374
- 397: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">finalNArgs</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">finalNArgs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">diffNArgs</span>
375
- 398: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
376
- 399: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
377
- 400: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
378
- 401: <span class="ruby-keyword kw">end</span>
379
- 402: <span class="ruby-keyword kw">end</span>
380
- 403:
381
- 404: <span class="ruby-keyword kw">end</span>
382
- 405:
383
- 406: <span class="ruby-identifier">nargs</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">1</span>]
384
- 407: <span class="ruby-identifier">regexp</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>( <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">0</span>][<span class="ruby-identifier">finalPath</span>] )
385
- 408: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">regexp</span>.<span class="ruby-identifier">match</span>( <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>).<span class="ruby-identifier">gsub</span>( <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>( <span class="ruby-node">&quot;^#{finalPath}&quot;</span> ), <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ) )
386
- 409: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
387
- 410: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">ParameterError</span>, <span class="ruby-node">&quot;Path info `#{@request.path_info}' does not match route regexp `#{regexp.source}'&quot;</span>
388
- 411: <span class="ruby-keyword kw">else</span>
389
- 412: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">captures</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)<span class="ruby-operator">?</span><span class="ruby-keyword kw">nil</span><span class="ruby-operator">:</span><span class="ruby-identifier">x</span> }
390
- 413: <span class="ruby-keyword kw">end</span>
391
- 414:
392
- 415: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">nargs</span>
393
- 416: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
238
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 302</span>
239
+ 302: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Route</span> <span class="ruby-operator">*</span><span class="ruby-identifier">routes_paths</span>
240
+ 303: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
241
+ 304: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>) {
242
+ 305: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)', :agent =&gt; /Songbird (\d\.\d)[\d\/]*?/</span>
243
+ 306: <span class="ruby-comment cmt"># # =&gt; [ {'/hello/world' =&gt; '([^\/]*)/id(\d*)', '/hello' =&gt; '(.*)'}, </span>
244
+ 307: <span class="ruby-comment cmt"># 2, </span>
245
+ 308: <span class="ruby-comment cmt"># &lt;Capcode::Klass&gt;, </span>
246
+ 309: <span class="ruby-comment cmt"># {:agent =&gt; /Songbird (\d\.\d)[\d\/]*?/} ]</span>
247
+ 310: <span class="ruby-identifier">hash_of_routes</span> = {}
248
+ 311: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-value">0</span>
249
+ 312: <span class="ruby-identifier">routes_paths</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
250
+ 313: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_route_path</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
251
+ 314: <span class="ruby-identifier">m</span> = <span class="ruby-regexp re">/\/([^\/]*\(.*)/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">current_route_path</span> )
252
+ 315: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
253
+ 316: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already defined with regexp `#{hash_of_routes[current_route_path]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
254
+ 317: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-value str">''</span>
255
+ 318: <span class="ruby-keyword kw">else</span>
256
+ 319: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
257
+ 320: <span class="ruby-identifier">_pre</span> = <span class="ruby-value str">&quot;/&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_pre</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
258
+ 321: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{_pre}' already defined with regexp `#{hash_of_routes[_pre]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_pre</span>)
259
+ 322: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">_pre</span>] = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]
260
+ 323: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]).<span class="ruby-identifier">number_of_captures</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">max_captures_for_routes</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]).<span class="ruby-identifier">number_of_captures</span>
261
+ 324: <span class="ruby-keyword kw">end</span>
262
+ 325: <span class="ruby-keyword kw">else</span>
263
+ 326: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">ParameterError</span>, <span class="ruby-value str">&quot;Bad route declaration !&quot;</span>, <span class="ruby-identifier">caller</span>
264
+ 327: <span class="ruby-keyword kw">end</span>
265
+ 328: <span class="ruby-keyword kw">end</span>
266
+ 329: [<span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-keyword kw">self</span>]
267
+ 330: }
268
+ 331:
269
+ 332: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
270
+ 333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
271
+ 334: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
272
+ 335: <span class="ruby-keyword kw">end</span>
273
+ 336:
274
+ 337: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
275
+ 338: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
276
+ 339: <span class="ruby-ivar">@env</span>
277
+ 340: <span class="ruby-keyword kw">end</span>
278
+ 341:
279
+ 342: <span class="ruby-comment cmt"># Session hash</span>
280
+ 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
281
+ 344: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
282
+ 345: <span class="ruby-keyword kw">end</span>
283
+ 346:
284
+ 347: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
285
+ 348: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
286
+ 349: <span class="ruby-ivar">@request</span>
287
+ 350: <span class="ruby-keyword kw">end</span>
288
+ 351:
289
+ 352: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
290
+ 353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
291
+ 354: <span class="ruby-ivar">@response</span>
292
+ 355: <span class="ruby-keyword kw">end</span>
293
+ 356:
294
+ 357: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>( <span class="ruby-identifier">e</span> ) <span class="ruby-comment cmt">#:nodoc:</span>
295
+ 358: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
296
+ 359: <span class="ruby-ivar">@response</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Response</span>.<span class="ruby-identifier">new</span>
297
+ 360: <span class="ruby-ivar">@request</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Request</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@env</span>)
298
+ 361:
299
+ 362: <span class="ruby-comment cmt"># __k = self.class.to_s.split( /::/ )[-1].downcase.to_sym</span>
300
+ 363: <span class="ruby-comment cmt"># @@__FILTERS.each do |f|</span>
301
+ 364: <span class="ruby-comment cmt"># proc = f.delete(:action)</span>
302
+ 365: <span class="ruby-comment cmt"># __run = true</span>
303
+ 366: <span class="ruby-comment cmt"># if f[:only]</span>
304
+ 367: <span class="ruby-comment cmt"># __run = f[:only].include?(__k)</span>
305
+ 368: <span class="ruby-comment cmt"># end</span>
306
+ 369: <span class="ruby-comment cmt"># if f[:except]</span>
307
+ 370: <span class="ruby-comment cmt"># __run = !f[:except].include?(__k)</span>
308
+ 371: <span class="ruby-comment cmt"># end</span>
309
+ 372: <span class="ruby-comment cmt"># </span>
310
+ 373: <span class="ruby-comment cmt"># # proc.call(self) if __run</span>
311
+ 374: <span class="ruby-comment cmt"># puts &quot;call #{proc} for #{__k}&quot;</span>
312
+ 375: <span class="ruby-comment cmt"># end</span>
313
+ 376:
314
+ 377: <span class="ruby-comment cmt"># Check authz</span>
315
+ 378: <span class="ruby-identifier">authz_options</span> = <span class="ruby-keyword kw">nil</span>
316
+ 379: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span> <span class="ruby-keyword kw">and</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
317
+ 380: <span class="ruby-identifier">authz_options</span> = <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>[<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">nil</span>
318
+ 381: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
319
+ 382: <span class="ruby-identifier">route</span> = <span class="ruby-keyword kw">nil</span>
320
+ 383:
321
+ 384: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span>, <span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
322
+ 385: <span class="ruby-identifier">regexp</span> = <span class="ruby-node">&quot;^#{r.gsub(/\/$/, &quot;&quot;)}([/]{1}.*)?$&quot;</span>
323
+ 386: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">regexp</span>).<span class="ruby-identifier">match</span>( <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span> )
324
+ 387: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">size</span>
325
+ 388: <span class="ruby-identifier">route</span> = <span class="ruby-identifier">r</span>
326
+ 389: <span class="ruby-identifier">authz_options</span> = <span class="ruby-identifier">o</span>
327
+ 390: <span class="ruby-keyword kw">end</span>
328
+ 391: <span class="ruby-keyword kw">end</span>
329
+ 392: <span class="ruby-keyword kw">end</span>
330
+ 393: <span class="ruby-keyword kw">end</span>
331
+ 394: <span class="ruby-keyword kw">end</span>
332
+ 395:
333
+ 396: <span class="ruby-identifier">r</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:halt</span>) {
334
+ 397: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
335
+ 398: <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:type</span>], <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>], <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>] ) {
336
+ 399: <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:autz</span>]
337
+ 400: }
338
+ 401: <span class="ruby-keyword kw">end</span>
339
+ 402:
340
+ 403: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
341
+ 404: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
342
+ 405: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
343
+ 406:
344
+ 407: <span class="ruby-identifier">aPath</span> = <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">&quot;/&quot;</span> )
345
+ 408: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span>, <span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
346
+ 409: <span class="ruby-identifier">xPath</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">&quot;/&quot;</span> )
347
+ 410: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">aPath</span>).<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
348
+ 411: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
349
+ 412: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span>
350
+ 413: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">finalNArgs</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">finalNArgs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">diffNArgs</span>
351
+ 414: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
352
+ 415: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
353
+ 416: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
394
354
  417: <span class="ruby-keyword kw">end</span>
395
- 418:
396
- 419: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
397
- 420: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;POST&quot;</span>
398
- 421: <span class="ruby-identifier">_method</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>( <span class="ruby-value str">&quot;_method&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">_</span><span class="ruby-operator">|</span> <span class="ruby-value str">&quot;post&quot;</span> }
399
- 422: <span class="ruby-identifier">send</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span> )
400
- 423: <span class="ruby-keyword kw">else</span>
401
- 424: <span class="ruby-identifier">_method</span> = <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
402
- 425: <span class="ruby-identifier">send</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span> )
403
- 426: <span class="ruby-keyword kw">end</span>
404
- 427: }
405
- 428: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
406
- 429: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[0]</span>
407
- 430: <span class="ruby-comment cmt">#r[1].each do |k,v|</span>
408
- 431: <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
409
- 432: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
355
+ 418: <span class="ruby-keyword kw">end</span>
356
+ 419:
357
+ 420: <span class="ruby-keyword kw">end</span>
358
+ 421:
359
+ 422: <span class="ruby-identifier">nargs</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">1</span>]
360
+ 423: <span class="ruby-identifier">regexp</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>( <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">0</span>][<span class="ruby-identifier">finalPath</span>] )
361
+ 424: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">regexp</span>.<span class="ruby-identifier">match</span>( <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>).<span class="ruby-identifier">gsub</span>( <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>( <span class="ruby-node">&quot;^#{finalPath}&quot;</span> ), <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">&quot;&quot;</span> ) )
362
+ 425: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
363
+ 426: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">ParameterError</span>, <span class="ruby-node">&quot;Path info `#{@request.path_info}' does not match route regexp `#{regexp.source}'&quot;</span>
364
+ 427: <span class="ruby-keyword kw">else</span>
365
+ 428: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">captures</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)<span class="ruby-operator">?</span><span class="ruby-keyword kw">nil</span><span class="ruby-operator">:</span><span class="ruby-identifier">x</span> }
366
+ 429: <span class="ruby-keyword kw">end</span>
367
+ 430:
368
+ 431: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">nargs</span>
369
+ 432: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
410
370
  433: <span class="ruby-keyword kw">end</span>
411
- 434: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[2]</span>
412
- 435: <span class="ruby-keyword kw">else</span>
413
- 436: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
414
- 437: <span class="ruby-keyword kw">end</span>
415
- 438:
416
- 439: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
417
- 440: <span class="ruby-keyword kw">end</span>
418
- 441:
419
- 442: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
420
- 443: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
421
- 444: }
422
- 445: <span class="ruby-keyword kw">end</span>
371
+ 434:
372
+ 435: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
373
+ 436: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;GET&quot;</span>
374
+ 437: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
375
+ 438: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;POST&quot;</span>
376
+ 439: <span class="ruby-identifier">_method</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>( <span class="ruby-value str">&quot;_method&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">_</span><span class="ruby-operator">|</span> <span class="ruby-value str">&quot;post&quot;</span> }
377
+ 440: <span class="ruby-identifier">send</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
378
+ 441: <span class="ruby-keyword kw">else</span>
379
+ 442: <span class="ruby-identifier">_method</span> = <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
380
+ 443: <span class="ruby-identifier">send</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
381
+ 444: <span class="ruby-keyword kw">end</span>
382
+ 445: }
383
+ 446: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
384
+ 447: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[0]</span>
385
+ 448: <span class="ruby-comment cmt">#r[1].each do |k,v|</span>
386
+ 449: <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
387
+ 450: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
388
+ 451: <span class="ruby-keyword kw">end</span>
389
+ 452: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[2]</span>
390
+ 453: <span class="ruby-keyword kw">else</span>
391
+ 454: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
392
+ 455: <span class="ruby-keyword kw">end</span>
393
+ 456:
394
+ 457: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
395
+ 458: <span class="ruby-keyword kw">end</span>
396
+ 459:
397
+ 460: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
398
+ 461: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
399
+ 462: }
400
+ 463: <span class="ruby-keyword kw">end</span>
423
401
  </pre>
424
402
  </div>
425
403
  </div>
426
404
  </div>
427
405
 
428
- <div id="method-M000009" class="method-detail">
429
- <a name="M000009"></a>
406
+ <div id="method-M000010" class="method-detail">
407
+ <a name="M000010"></a>
430
408
 
431
409
  <div class="method-heading">
432
- <a href="#M000009" class="method-signature">
410
+ <a href="#M000010" class="method-signature">
433
411
  <span class="method-name">application</span><span class="method-args">( args = {} ) {|self| ...}</span>
434
412
  </a>
435
413
  </div>
@@ -439,62 +417,104 @@ If the regexp in the route does not match, all arguments will be
439
417
  Return the Rack App.
440
418
  </p>
441
419
  <p>
442
- Options : same has <a href="Capcode.html#M000010">Capcode.run</a>
420
+ Options : see <a href="Capcode.html#M000012">Capcode.set</a>
421
+ </p>
422
+ <p>
423
+ Options <a href="Capcode.html#M000012">set</a> here replace the ones <a
424
+ href="Capcode.html#M000012">set</a> globally
443
425
  </p>
444
426
  <p><a class="source-toggle" href="#"
445
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
446
- <div class="method-source-code" id="M000009-source">
427
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
428
+ <div class="method-source-code" id="M000010-source">
447
429
  <pre>
448
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 512</span>
449
- 512: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application</span>( <span class="ruby-identifier">args</span> = {} )
450
- 513: <span class="ruby-identifier">conf</span> = <span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
451
- 514:
452
- 515: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
453
- 516: <span class="ruby-keyword kw">begin</span>
454
- 517: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.public_methods(true).include?( '__urls__' )&quot;</span>
455
- 518: <span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.__urls__&quot;</span>
456
- 519: <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
457
- 520: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already define !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@@__ROUTES</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
458
- 521: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">new</span>
459
- 522: <span class="ruby-keyword kw">end</span>
460
- 523: <span class="ruby-keyword kw">end</span>
461
- 524: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
462
- 525: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
463
- 526: <span class="ruby-keyword kw">end</span>
464
- 527: <span class="ruby-keyword kw">end</span>
465
- 528:
466
- 529: <span class="ruby-comment cmt"># Set Static directory</span>
467
- 530: <span class="ruby-ivar">@@__STATIC_DIR</span> = (<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;/&quot;</span>)<span class="ruby-operator">?</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>]<span class="ruby-operator">:</span><span class="ruby-value str">&quot;/&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
468
- 531:
469
- 532: <span class="ruby-comment cmt"># Initialize Rack App</span>
470
- 533: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Map routes.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
471
- 534: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">URLMap</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@@__ROUTES</span>)
472
- 535: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{conf[:static]})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
473
- 536: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Static</span>.<span class="ruby-identifier">new</span>(
474
- 537: <span class="ruby-identifier">app</span>,
475
- 538: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-ivar">@@__STATIC_DIR</span>],
476
- 539: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>])
477
- 540: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
478
- 541: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Initialize session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
479
- 542: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span><span class="ruby-operator">::</span><span class="ruby-constant">Cookie</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:session</span>] )
480
- 543: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
481
- 544: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ContentLength</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
482
- 545: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Lint</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
483
- 546: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ShowExceptions</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
484
- 547: <span class="ruby-comment cmt">#app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
485
- 548: <span class="ruby-comment cmt"># app = Rack::CommonLogger.new( app, Logger.new(conf[:log]) )</span>
486
- 549:
487
- 550: <span class="ruby-comment cmt"># Start database</span>
488
- 551: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">&quot;db_connect&quot;</span>
489
- 552: <span class="ruby-identifier">db_connect</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:db_config</span>], <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>] )
490
- 553: <span class="ruby-keyword kw">end</span>
491
- 554:
492
- 555: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
493
- 556: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
494
- 557: <span class="ruby-keyword kw">end</span>
495
- 558:
496
- 559: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">app</span>
497
- 560: <span class="ruby-keyword kw">end</span>
430
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 549</span>
431
+ 549: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application</span>( <span class="ruby-identifier">args</span> = {} )
432
+ 550: <span class="ruby-identifier">conf</span> = <span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
433
+ 551:
434
+ 552: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
435
+ 553: <span class="ruby-keyword kw">begin</span>
436
+ 554: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.public_methods(true).include?( '__urls__' )&quot;</span>
437
+ 555: <span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.__urls__&quot;</span>
438
+ 556: <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
439
+ 557: <span class="ruby-comment cmt">#raise Capcode::RouteError, &quot;Route `#{current_route_path}' already define !&quot;, caller if @@__ROUTES.keys.include?(current_route_path)</span>
440
+ 558: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already define !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
441
+ 559: <span class="ruby-comment cmt">#@@__ROUTES[current_route_path] = klass.new</span>
442
+ 560: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">new</span>
443
+ 561: <span class="ruby-keyword kw">end</span>
444
+ 562: <span class="ruby-keyword kw">end</span>
445
+ 563: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
446
+ 564: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
447
+ 565: <span class="ruby-keyword kw">end</span>
448
+ 566: <span class="ruby-keyword kw">end</span>
449
+ 567:
450
+ 568: <span class="ruby-comment cmt"># Set Static directory</span>
451
+ 569: <span class="ruby-comment cmt">#@@__STATIC_DIR = (conf[:static][0].chr == &quot;/&quot;)?conf[:static]:&quot;/&quot;+conf[:static] unless conf[:static].nil?</span>
452
+ 570: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> = (<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;/&quot;</span>)<span class="ruby-operator">?</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>]<span class="ruby-operator">:</span><span class="ruby-value str">&quot;/&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
453
+ 571:
454
+ 572: <span class="ruby-comment cmt"># Initialize Rack App</span>
455
+ 573: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Map routes.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
456
+ 574: <span class="ruby-comment cmt">#app = Rack::URLMap.new(@@__ROUTES)</span>
457
+ 575: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">URLMap</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>)
458
+ 576: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{conf[:static]})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
459
+ 577: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Static</span>.<span class="ruby-identifier">new</span>(
460
+ 578: <span class="ruby-identifier">app</span>,
461
+ 579: <span class="ruby-comment cmt">#:urls =&gt; [@@__STATIC_DIR], </span>
462
+ 580: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>],
463
+ 581: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>])
464
+ 582: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
465
+ 583: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Initialize session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
466
+ 584: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span><span class="ruby-operator">::</span><span class="ruby-constant">Cookie</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:session</span>] )
467
+ 585: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
468
+ 586: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ContentLength</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
469
+ 587: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Lint</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
470
+ 588: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ShowExceptions</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
471
+ 589: <span class="ruby-comment cmt">#app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
472
+ 590: <span class="ruby-comment cmt"># app = Rack::CommonLogger.new( app, Logger.new(conf[:log]) )</span>
473
+ 591:
474
+ 592: <span class="ruby-identifier">middlewares</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mw</span><span class="ruby-operator">|</span>
475
+ 593: <span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span> = <span class="ruby-identifier">mw</span>
476
+ 594: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Load middleware #{middleware}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
477
+ 595: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>
478
+ 596: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">middleware</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> )
479
+ 597: <span class="ruby-keyword kw">else</span>
480
+ 598: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">middleware</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
481
+ 599: <span class="ruby-keyword kw">end</span>
482
+ 600: <span class="ruby-keyword kw">end</span>
483
+ 601:
484
+ 602: <span class="ruby-comment cmt"># Start database</span>
485
+ 603: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">&quot;db_connect&quot;</span>
486
+ 604: <span class="ruby-identifier">db_connect</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:db_config</span>], <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>] )
487
+ 605: <span class="ruby-keyword kw">end</span>
488
+ 606:
489
+ 607: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
490
+ 608: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
491
+ 609: <span class="ruby-keyword kw">end</span>
492
+ 610:
493
+ 611: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">app</span>
494
+ 612: <span class="ruby-keyword kw">end</span>
495
+ </pre>
496
+ </div>
497
+ </div>
498
+ </div>
499
+
500
+ <div id="method-M000013" class="method-detail">
501
+ <a name="M000013"></a>
502
+
503
+ <div class="method-heading">
504
+ <a href="#M000013" class="method-signature">
505
+ <span class="method-name">config</span><span class="method-args">()</span>
506
+ </a>
507
+ </div>
508
+
509
+ <div class="method-description">
510
+ <p><a class="source-toggle" href="#"
511
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
512
+ <div class="method-source-code" id="M000013-source">
513
+ <pre>
514
+ <span class="ruby-comment cmt"># File lib/capcode/configuration.rb, line 35</span>
515
+ 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">config</span>
516
+ 36: <span class="ruby-ivar">@configuration</span> <span class="ruby-operator">||=</span> {}
517
+ 37: <span class="ruby-keyword kw">end</span>
498
518
  </pre>
499
519
  </div>
500
520
  </div>
@@ -517,20 +537,20 @@ Hash containing all the environment variables
517
537
  onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
518
538
  <div class="method-source-code" id="M000003-source">
519
539
  <pre>
520
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 320</span>
521
- 320: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
522
- 321: <span class="ruby-ivar">@env</span>
523
- 322: <span class="ruby-keyword kw">end</span>
540
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 338</span>
541
+ 338: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
542
+ 339: <span class="ruby-ivar">@env</span>
543
+ 340: <span class="ruby-keyword kw">end</span>
524
544
  </pre>
525
545
  </div>
526
546
  </div>
527
547
  </div>
528
548
 
529
- <div id="method-M000008" class="method-detail">
530
- <a name="M000008"></a>
549
+ <div id="method-M000009" class="method-detail">
550
+ <a name="M000009"></a>
531
551
 
532
552
  <div class="method-heading">
533
- <a href="#M000008" class="method-signature">
553
+ <a href="#M000009" class="method-signature">
534
554
  <span class="method-name">http_authentication</span><span class="method-args">( opts = {}, &amp;b )</span>
535
555
  </a>
536
556
  </div>
@@ -551,8 +571,10 @@ Options :
551
571
  <li><tt>:realm</tt> : realm ;) - default : &quot;Capcode.app&quot;
552
572
 
553
573
  </li>
554
- <li><tt>:opaque</tt> : Your secret passphrase. You MUST set it if you use
555
- Digest Auth - default : &quot;opaque&quot;
574
+ <li><tt>:opaque</tt> : Your secret passphrase. You MUST <a
575
+ href="Capcode.html#M000012">set</a> it if you <a
576
+ href="Capcode.html#M000008">use</a> Digest Auth - default :
577
+ &quot;opaque&quot;
556
578
 
557
579
  </li>
558
580
  <li><tt>:routes</tt> : Routes - default : &quot;/&quot;
@@ -570,30 +592,30 @@ The block must return a Hash of username =&gt; password like that :
570
592
  }
571
593
  </pre>
572
594
  <p><a class="source-toggle" href="#"
573
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
574
- <div class="method-source-code" id="M000008-source">
595
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
596
+ <div class="method-source-code" id="M000009-source">
575
597
  <pre>
576
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 470</span>
577
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">opts</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
578
- 471: <span class="ruby-identifier">options</span> = {
579
- 472: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:basic</span>,
580
- 473: <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;Capcode.app&quot;</span>,
581
- 474: <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;opaque&quot;</span>,
582
- 475: <span class="ruby-identifier">:routes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;/&quot;</span>
583
- 476: }.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">opts</span> )
584
- 477:
585
- 478: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:autz</span>] = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">call</span>()
586
- 479:
587
- 480: <span class="ruby-ivar">@__auth__</span> <span class="ruby-operator">||=</span> {}
588
- 481:
589
- 482: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Array</span>
590
- 483: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
591
- 484: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-identifier">options</span>
592
- 485: <span class="ruby-keyword kw">end</span>
593
- 486: <span class="ruby-keyword kw">else</span>
594
- 487: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>]] = <span class="ruby-identifier">options</span>
595
- 488: <span class="ruby-keyword kw">end</span>
596
- 489: <span class="ruby-keyword kw">end</span>
598
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 506</span>
599
+ 506: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">opts</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
600
+ 507: <span class="ruby-identifier">options</span> = {
601
+ 508: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:basic</span>,
602
+ 509: <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;Capcode.app&quot;</span>,
603
+ 510: <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;opaque&quot;</span>,
604
+ 511: <span class="ruby-identifier">:routes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;/&quot;</span>
605
+ 512: }.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">opts</span> )
606
+ 513:
607
+ 514: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:autz</span>] = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">call</span>()
608
+ 515:
609
+ 516: <span class="ruby-ivar">@__auth__</span> <span class="ruby-operator">||=</span> {}
610
+ 517:
611
+ 518: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Array</span>
612
+ 519: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
613
+ 520: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-identifier">options</span>
614
+ 521: <span class="ruby-keyword kw">end</span>
615
+ 522: <span class="ruby-keyword kw">else</span>
616
+ 523: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>]] = <span class="ruby-identifier">options</span>
617
+ 524: <span class="ruby-keyword kw">end</span>
618
+ 525: <span class="ruby-keyword kw">end</span>
597
619
  </pre>
598
620
  </div>
599
621
  </div>
@@ -622,10 +644,11 @@ Rack or What you want Helper
622
644
  onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
623
645
  <div class="method-source-code" id="M000007-source">
624
646
  <pre>
625
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 452</span>
626
- 452: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">map</span>( <span class="ruby-identifier">route</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
627
- 453: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">route</span>] = <span class="ruby-keyword kw">yield</span>
628
- 454: <span class="ruby-keyword kw">end</span>
647
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 470</span>
648
+ 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">map</span>( <span class="ruby-identifier">route</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
649
+ 471: <span class="ruby-comment cmt">#@@__ROUTES[route] = yield</span>
650
+ 472: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>[<span class="ruby-identifier">route</span>] = <span class="ruby-keyword kw">yield</span>
651
+ 473: <span class="ruby-keyword kw">end</span>
629
652
  </pre>
630
653
  </div>
631
654
  </div>
@@ -649,10 +672,10 @@ parameters (GET or POST)
649
672
  onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
650
673
  <div class="method-source-code" id="M000002-source">
651
674
  <pre>
652
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 315</span>
653
- 315: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
654
- 316: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
655
- 317: <span class="ruby-keyword kw">end</span>
675
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 333</span>
676
+ 333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
677
+ 334: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
678
+ 335: <span class="ruby-keyword kw">end</span>
656
679
  </pre>
657
680
  </div>
658
681
  </div>
@@ -675,10 +698,10 @@ Return the Rack::Request object
675
698
  onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
676
699
  <div class="method-source-code" id="M000005-source">
677
700
  <pre>
678
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 330</span>
679
- 330: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
680
- 331: <span class="ruby-ivar">@request</span>
681
- 332: <span class="ruby-keyword kw">end</span>
701
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 348</span>
702
+ 348: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
703
+ 349: <span class="ruby-ivar">@request</span>
704
+ 350: <span class="ruby-keyword kw">end</span>
682
705
  </pre>
683
706
  </div>
684
707
  </div>
@@ -701,27 +724,202 @@ Return the Rack::Response object
701
724
  onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
702
725
  <div class="method-source-code" id="M000006-source">
703
726
  <pre>
704
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 335</span>
705
- 335: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
706
- 336: <span class="ruby-ivar">@response</span>
707
- 337: <span class="ruby-keyword kw">end</span>
727
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 353</span>
728
+ 353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
729
+ 354: <span class="ruby-ivar">@response</span>
730
+ 355: <span class="ruby-keyword kw">end</span>
708
731
  </pre>
709
732
  </div>
710
733
  </div>
711
734
  </div>
712
735
 
713
- <div id="method-M000010" class="method-detail">
714
- <a name="M000010"></a>
736
+ <div id="method-M000011" class="method-detail">
737
+ <a name="M000011"></a>
715
738
 
716
739
  <div class="method-heading">
717
- <a href="#M000010" class="method-signature">
740
+ <a href="#M000011" class="method-signature">
718
741
  <span class="method-name">run</span><span class="method-args">( args = {} ) {|self| ...}</span>
719
742
  </a>
720
743
  </div>
721
744
 
722
745
  <div class="method-description">
723
746
  <p>
724
- Start your <a href="Capcode.html#M000009">application</a>.
747
+ Start your <a href="Capcode.html#M000010">application</a>.
748
+ </p>
749
+ <p>
750
+ Options : see <a href="Capcode.html#M000012">Capcode.set</a>
751
+ </p>
752
+ <p>
753
+ Options <a href="Capcode.html#M000012">set</a> here replace the ones <a
754
+ href="Capcode.html#M000012">set</a> globally
755
+ </p>
756
+ <p><a class="source-toggle" href="#"
757
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
758
+ <div class="method-source-code" id="M000011-source">
759
+ <pre>
760
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 619</span>
761
+ 619: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
762
+ 620: <span class="ruby-identifier">conf</span> = <span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
763
+ 621:
764
+ 622: <span class="ruby-comment cmt"># Parse options</span>
765
+ 623: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">opts</span><span class="ruby-operator">|</span>
766
+ 624: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
767
+ 625: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
768
+ 626: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
769
+ 627:
770
+ 628: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-C&quot;</span>, <span class="ruby-value str">&quot;--console&quot;</span>, <span class="ruby-value str">&quot;Run in console mode with IRB (default: false)&quot;</span> ) {
771
+ 629: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>] = <span class="ruby-keyword kw">true</span>
772
+ 630: }
773
+ 631: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-h&quot;</span>, <span class="ruby-value str">&quot;--host HOSTNAME&quot;</span>, <span class="ruby-node">&quot;Host for web server to bind to (default: #{conf[:host]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
774
+ 632: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>] = <span class="ruby-identifier">h</span>
775
+ 633: }
776
+ 634: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-p&quot;</span>, <span class="ruby-value str">&quot;--port NUM&quot;</span>, <span class="ruby-node">&quot;Port for web server (default: #{conf[:port]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
777
+ 635: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>] = <span class="ruby-identifier">p</span>
778
+ 636: }
779
+ 637: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-d&quot;</span>, <span class="ruby-value str">&quot;--daemonize [true|false]&quot;</span>, <span class="ruby-node">&quot;Daemonize (default: #{conf[:daemonize]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
780
+ 638: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>] = <span class="ruby-identifier">d</span>
781
+ 639: }
782
+ 640: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-r&quot;</span>, <span class="ruby-value str">&quot;--root PATH&quot;</span>, <span class="ruby-node">&quot;Working directory (default: #{conf[:root]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
783
+ 641: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] = <span class="ruby-identifier">w</span>
784
+ 642: }
785
+ 643: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-s&quot;</span>, <span class="ruby-value str">&quot;--static PATH&quot;</span>, <span class="ruby-node">&quot;Static directory -- relative to the root directory (default: #{conf[:static]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
786
+ 644: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] = <span class="ruby-identifier">r</span>
787
+ 645: }
788
+ 646:
789
+ 647: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
790
+ 648: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
791
+ 649:
792
+ 650: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-?&quot;</span>, <span class="ruby-value str">&quot;--help&quot;</span>, <span class="ruby-value str">&quot;Show this message&quot;</span>) <span class="ruby-keyword kw">do</span>
793
+ 651: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
794
+ 652: <span class="ruby-identifier">exit</span>
795
+ 653: <span class="ruby-keyword kw">end</span>
796
+ 654: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-v&quot;</span>, <span class="ruby-value str">&quot;--version&quot;</span>, <span class="ruby-value str">&quot;Show versions&quot;</span>) <span class="ruby-keyword kw">do</span>
797
+ 655: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
798
+ 656: <span class="ruby-identifier">exit</span>
799
+ 657: <span class="ruby-keyword kw">end</span>
800
+ 658: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>( <span class="ruby-value str">&quot;-V&quot;</span>, <span class="ruby-value str">&quot;--verbose&quot;</span>, <span class="ruby-value str">&quot;Run in verbose mode&quot;</span> ) <span class="ruby-keyword kw">do</span>
801
+ 659: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>] = <span class="ruby-keyword kw">true</span>
802
+ 660: <span class="ruby-keyword kw">end</span>
803
+ 661: <span class="ruby-keyword kw">end</span>
804
+ 662:
805
+ 663: <span class="ruby-keyword kw">begin</span>
806
+ 664: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
807
+ 665: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ex</span>
808
+ 666: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
809
+ 667: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
810
+ 668: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
811
+ 669: <span class="ruby-keyword kw">end</span>
812
+ 670:
813
+ 671: <span class="ruby-comment cmt"># Run in the Working directory</span>
814
+ 672: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(conf[:root])})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
815
+ 673: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] ) <span class="ruby-keyword kw">do</span>
816
+ 674:
817
+ 675: <span class="ruby-comment cmt"># Check that mongrel exists </span>
818
+ 676: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
819
+ 677: <span class="ruby-keyword kw">begin</span>
820
+ 678: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
821
+ 679: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;mongrel&quot;</span>
822
+ 680: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
823
+ 681: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
824
+ 682: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;webrick&quot;</span>
825
+ 683: <span class="ruby-keyword kw">end</span>
826
+ 684: <span class="ruby-keyword kw">end</span>
827
+ 685:
828
+ 686: <span class="ruby-comment cmt"># From rackup !!!</span>
829
+ 687: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>]
830
+ 688: <span class="ruby-keyword kw">if</span> <span class="ruby-regexp re">/java/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-constant">RUBY_PLATFORM</span>).<span class="ruby-identifier">nil?</span>
831
+ 689: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">&quot;1.9&quot;</span>
832
+ 690: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
833
+ 691: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
834
+ 692: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
835
+ 693: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
836
+ 694: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
837
+ 695: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
838
+ 696: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
839
+ 697: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
840
+ 698: <span class="ruby-keyword kw">else</span>
841
+ 699: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
842
+ 700: <span class="ruby-keyword kw">end</span>
843
+ 701: <span class="ruby-keyword kw">else</span>
844
+ 702: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
845
+ 703: <span class="ruby-keyword kw">end</span>
846
+ 704:
847
+ 705: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>], <span class="ruby-value str">'w'</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">&quot;#{Process.pid}&quot;</span>) }
848
+ 706: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) }
849
+ 707: <span class="ruby-keyword kw">end</span>
850
+ 708:
851
+ 709: <span class="ruby-identifier">app</span> = <span class="ruby-keyword kw">nil</span>
852
+ 710: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
853
+ 711: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-identifier">conf</span>) { <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> ) }
854
+ 712: <span class="ruby-keyword kw">else</span>
855
+ 713: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-identifier">conf</span>)
856
+ 714: <span class="ruby-keyword kw">end</span>
857
+ 715: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">CommonLogger</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>]) )
858
+ 716:
859
+ 717: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>]
860
+ 718: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
861
+ 719: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
862
+ 720: <span class="ruby-identifier">exit</span>
863
+ 721: <span class="ruby-keyword kw">end</span>
864
+ 722:
865
+ 723: <span class="ruby-comment cmt"># Start server</span>
866
+ 724: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>]
867
+ 725: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
868
+ 726: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{conf[:host]}:#{conf[:port]}&quot;</span>
869
+ 727: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">Mongrel</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
870
+ 728: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span> }
871
+ 729: }
872
+ 730: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
873
+ 731: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{conf[:host]}:#{conf[:port]}&quot;</span>
874
+ 732: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">WEBrick</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
875
+ 733: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">shutdown</span> }
876
+ 734: }
877
+ 735: <span class="ruby-keyword kw">end</span>
878
+ 736: <span class="ruby-keyword kw">end</span>
879
+ 737: <span class="ruby-keyword kw">end</span>
880
+ </pre>
881
+ </div>
882
+ </div>
883
+ </div>
884
+
885
+ <div id="method-M000004" class="method-detail">
886
+ <a name="M000004"></a>
887
+
888
+ <div class="method-heading">
889
+ <a href="#M000004" class="method-signature">
890
+ <span class="method-name">session</span><span class="method-args">()</span>
891
+ </a>
892
+ </div>
893
+
894
+ <div class="method-description">
895
+ <p>
896
+ Session hash
897
+ </p>
898
+ <p><a class="source-toggle" href="#"
899
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
900
+ <div class="method-source-code" id="M000004-source">
901
+ <pre>
902
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 343</span>
903
+ 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
904
+ 344: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
905
+ 345: <span class="ruby-keyword kw">end</span>
906
+ </pre>
907
+ </div>
908
+ </div>
909
+ </div>
910
+
911
+ <div id="method-M000012" class="method-detail">
912
+ <a name="M000012"></a>
913
+
914
+ <div class="method-heading">
915
+ <a href="#M000012" class="method-signature">
916
+ <span class="method-name">set</span><span class="method-args">( key, value )</span>
917
+ </a>
918
+ </div>
919
+
920
+ <div class="method-description">
921
+ <p>
922
+ Set global configuration options
725
923
  </p>
726
924
  <p>
727
925
  Options :
@@ -747,177 +945,84 @@ See Rack::Session for more informations
747
945
 
748
946
  </li>
749
947
  <li><tt>:daemonize</tt> = Daemonize <a
750
- href="Capcode.html#M000009">application</a> (default: false)
948
+ href="Capcode.html#M000010">application</a> (default: false)
751
949
 
752
950
  </li>
753
951
  <li><tt>:db_config</tt> = database configuration file (default: database.yml)
754
952
 
755
953
  </li>
756
- <li><tt>:static</tt> = Static directory (default: none &#8212; relative to the
757
- working directory)
954
+ <li><tt>:static</tt> = Static directory (default: the working directory)
758
955
 
759
956
  </li>
760
957
  <li><tt>:root</tt> = Root directory (default: directory of the main.rb) &#8212;
761
958
  This is also the working directory !
762
959
 
763
960
  </li>
764
- <li><tt>:verbose</tt> = <a href="Capcode.html#M000010">run</a> in verbose mode
961
+ <li><tt>:verbose</tt> = <a href="Capcode.html#M000011">run</a> in verbose mode
765
962
 
766
963
  </li>
767
964
  <li><tt>:auth</tt> = HTTP Basic Authentication options
768
965
 
769
966
  </li>
770
967
  </ul>
968
+ <p>
969
+ It can exist specifics options depending on a renderer, a helper, &#8230;
970
+ </p>
971
+ <p>
972
+ Example :
973
+ </p>
974
+ <pre>
975
+ module Capcode
976
+ set :erb, &quot;/path/to/erb/files&quot;
977
+ ...
978
+ end
979
+ </pre>
771
980
  <p><a class="source-toggle" href="#"
772
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
773
- <div class="method-source-code" id="M000010-source">
981
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
982
+ <div class="method-source-code" id="M000012-source">
774
983
  <pre>
775
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 577</span>
776
- 577: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
777
- 578: <span class="ruby-identifier">conf</span> = <span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
778
- 579:
779
- 580: <span class="ruby-comment cmt"># Parse options</span>
780
- 581: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">opts</span><span class="ruby-operator">|</span>
781
- 582: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
782
- 583: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
783
- 584: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
784
- 585:
785
- 586: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-C&quot;</span>, <span class="ruby-value str">&quot;--console&quot;</span>, <span class="ruby-value str">&quot;Run in console mode with IRB (default: false)&quot;</span> ) {
786
- 587: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>] = <span class="ruby-keyword kw">true</span>
787
- 588: }
788
- 589: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-h&quot;</span>, <span class="ruby-value str">&quot;--host HOSTNAME&quot;</span>, <span class="ruby-node">&quot;Host for web server to bind to (default: #{conf[:host]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
789
- 590: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>] = <span class="ruby-identifier">h</span>
790
- 591: }
791
- 592: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-p&quot;</span>, <span class="ruby-value str">&quot;--port NUM&quot;</span>, <span class="ruby-node">&quot;Port for web server (default: #{conf[:port]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
792
- 593: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>] = <span class="ruby-identifier">p</span>
793
- 594: }
794
- 595: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-d&quot;</span>, <span class="ruby-value str">&quot;--daemonize [true|false]&quot;</span>, <span class="ruby-node">&quot;Daemonize (default: #{conf[:daemonize]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
795
- 596: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>] = <span class="ruby-identifier">d</span>
796
- 597: }
797
- 598: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-r&quot;</span>, <span class="ruby-value str">&quot;--root PATH&quot;</span>, <span class="ruby-node">&quot;Working directory (default: #{conf[:root]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
798
- 599: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] = <span class="ruby-identifier">w</span>
799
- 600: }
800
- 601: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-s&quot;</span>, <span class="ruby-value str">&quot;--static PATH&quot;</span>, <span class="ruby-node">&quot;Static directory -- relative to the root directory (default: #{conf[:static]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
801
- 602: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] = <span class="ruby-identifier">r</span>
802
- 603: }
803
- 604:
804
- 605: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
805
- 606: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
806
- 607:
807
- 608: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-?&quot;</span>, <span class="ruby-value str">&quot;--help&quot;</span>, <span class="ruby-value str">&quot;Show this message&quot;</span>) <span class="ruby-keyword kw">do</span>
808
- 609: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
809
- 610: <span class="ruby-identifier">exit</span>
810
- 611: <span class="ruby-keyword kw">end</span>
811
- 612: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-v&quot;</span>, <span class="ruby-value str">&quot;--version&quot;</span>, <span class="ruby-value str">&quot;Show versions&quot;</span>) <span class="ruby-keyword kw">do</span>
812
- 613: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
813
- 614: <span class="ruby-identifier">exit</span>
814
- 615: <span class="ruby-keyword kw">end</span>
815
- 616: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>( <span class="ruby-value str">&quot;-V&quot;</span>, <span class="ruby-value str">&quot;--verbose&quot;</span>, <span class="ruby-value str">&quot;Run in verbose mode&quot;</span> ) <span class="ruby-keyword kw">do</span>
816
- 617: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>] = <span class="ruby-keyword kw">true</span>
817
- 618: <span class="ruby-keyword kw">end</span>
818
- 619: <span class="ruby-keyword kw">end</span>
819
- 620:
820
- 621: <span class="ruby-keyword kw">begin</span>
821
- 622: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
822
- 623: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ex</span>
823
- 624: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
824
- 625: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
825
- 626: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
826
- 627: <span class="ruby-keyword kw">end</span>
827
- 628:
828
- 629: <span class="ruby-comment cmt"># Run in the Working directory</span>
829
- 630: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(conf[:root])})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:verbose</span>]
830
- 631: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] ) <span class="ruby-keyword kw">do</span>
831
- 632:
832
- 633: <span class="ruby-comment cmt"># Check that mongrel exists </span>
833
- 634: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
834
- 635: <span class="ruby-keyword kw">begin</span>
835
- 636: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
836
- 637: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;mongrel&quot;</span>
837
- 638: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
838
- 639: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
839
- 640: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;webrick&quot;</span>
840
- 641: <span class="ruby-keyword kw">end</span>
841
- 642: <span class="ruby-keyword kw">end</span>
842
- 643:
843
- 644: <span class="ruby-comment cmt"># From rackup !!!</span>
844
- 645: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>]
845
- 646: <span class="ruby-keyword kw">if</span> <span class="ruby-regexp re">/java/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-constant">RUBY_PLATFORM</span>).<span class="ruby-identifier">nil?</span>
846
- 647: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">&quot;1.9&quot;</span>
847
- 648: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
848
- 649: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
849
- 650: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
850
- 651: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
851
- 652: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
852
- 653: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
853
- 654: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
854
- 655: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
855
- 656: <span class="ruby-keyword kw">else</span>
856
- 657: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
857
- 658: <span class="ruby-keyword kw">end</span>
858
- 659: <span class="ruby-keyword kw">else</span>
859
- 660: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
860
- 661: <span class="ruby-keyword kw">end</span>
861
- 662:
862
- 663: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>], <span class="ruby-value str">'w'</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">&quot;#{Process.pid}&quot;</span>) }
863
- 664: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) }
864
- 665: <span class="ruby-keyword kw">end</span>
865
- 666:
866
- 667: <span class="ruby-identifier">app</span> = <span class="ruby-keyword kw">nil</span>
867
- 668: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
868
- 669: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-identifier">conf</span>) { <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> ) }
869
- 670: <span class="ruby-keyword kw">else</span>
870
- 671: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-identifier">conf</span>)
871
- 672: <span class="ruby-keyword kw">end</span>
872
- 673: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">CommonLogger</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>]) )
873
- 674:
874
- 675: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>]
875
- 676: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
876
- 677: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
877
- 678: <span class="ruby-identifier">exit</span>
878
- 679: <span class="ruby-keyword kw">end</span>
879
- 680:
880
- 681: <span class="ruby-comment cmt"># Start server</span>
881
- 682: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>]
882
- 683: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
883
- 684: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{conf[:host]}:#{conf[:port]}&quot;</span>
884
- 685: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">Mongrel</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
885
- 686: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span> }
886
- 687: }
887
- 688: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
888
- 689: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{conf[:host]}:#{conf[:port]}&quot;</span>
889
- 690: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">WEBrick</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
890
- 691: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">shutdown</span> }
891
- 692: }
892
- 693: <span class="ruby-keyword kw">end</span>
893
- 694: <span class="ruby-keyword kw">end</span>
894
- 695: <span class="ruby-keyword kw">end</span>
984
+ <span class="ruby-comment cmt"># File lib/capcode/configuration.rb, line 27</span>
985
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span>( <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span> )
986
+ 28: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
987
+ 29: <span class="ruby-keyword kw">end</span>
895
988
  </pre>
896
989
  </div>
897
990
  </div>
898
991
  </div>
899
992
 
900
- <div id="method-M000004" class="method-detail">
901
- <a name="M000004"></a>
993
+ <div id="method-M000008" class="method-detail">
994
+ <a name="M000008"></a>
902
995
 
903
996
  <div class="method-heading">
904
- <a href="#M000004" class="method-signature">
905
- <span class="method-name">session</span><span class="method-args">()</span>
997
+ <a href="#M000008" class="method-signature">
998
+ <span class="method-name">use</span><span class="method-args">(middleware, *args, &amp;block)</span>
906
999
  </a>
907
1000
  </div>
908
1001
 
909
1002
  <div class="method-description">
910
1003
  <p>
911
- Session hash
1004
+ This method allow you to <a href="Capcode.html#M000008">use</a> a Rack
1005
+ middleware
1006
+ </p>
1007
+ <p>
1008
+ Example :
912
1009
  </p>
1010
+ <pre>
1011
+ module Capcode
1012
+ ...
1013
+ use Rack::Codehighlighter, :coderay, :element =&gt; &quot;pre&quot;,
1014
+ :pattern =&gt; /\A:::(\w+)\s*\n/, :logging =&gt; false
1015
+ ...
1016
+ end
1017
+ </pre>
913
1018
  <p><a class="source-toggle" href="#"
914
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
915
- <div class="method-source-code" id="M000004-source">
1019
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
1020
+ <div class="method-source-code" id="M000008-source">
916
1021
  <pre>
917
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 325</span>
918
- 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
919
- 326: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
920
- 327: <span class="ruby-keyword kw">end</span>
1022
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 485</span>
1023
+ 485: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">use</span>(<span class="ruby-identifier">middleware</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
1024
+ 486: <span class="ruby-identifier">middlewares</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>]
1025
+ 487: <span class="ruby-keyword kw">end</span>
921
1026
  </pre>
922
1027
  </div>
923
1028
  </div>