Capcode 0.9.7 → 0.9.8

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.
@@ -12,6 +12,14 @@ Capcode is a web microframework
12
12
 
13
13
  == FEATURES/PROBLEMS:
14
14
 
15
+ === 0.9.8
16
+ * Add "any" to easly replace an <tt>alias_method :post, :get</tt>
17
+ * Bug correction in Filter : actions are now executed in the order they are declared
18
+ * Filters execution stop at the first non nul response
19
+ * Add "log" helper
20
+ * Add {Unicorn}[http://unicorn.bogomips.org/] and {Rainbows}[http://rainbows.rubyforge.org/] supports (*EXPERIMENTAL*)
21
+ * Add --server option
22
+
15
23
  === 0.9.7
16
24
  * Major bug correction in Capcode.URL
17
25
 
@@ -102,16 +102,17 @@
102
102
  <div class="name-list">
103
103
  <a href="#M000001">Route</a>&nbsp;&nbsp;
104
104
  <a href="#M000010">application</a>&nbsp;&nbsp;
105
- <a href="#M000013">before_filter</a>&nbsp;&nbsp;
105
+ <a href="#M000014">before_filter</a>&nbsp;&nbsp;
106
106
  <a href="#M000003">env</a>&nbsp;&nbsp;
107
107
  <a href="#M000009">http_authentication</a>&nbsp;&nbsp;
108
+ <a href="#M000012">logger</a>&nbsp;&nbsp;
108
109
  <a href="#M000007">map</a>&nbsp;&nbsp;
109
110
  <a href="#M000002">params</a>&nbsp;&nbsp;
110
111
  <a href="#M000005">request</a>&nbsp;&nbsp;
111
112
  <a href="#M000006">response</a>&nbsp;&nbsp;
112
113
  <a href="#M000011">run</a>&nbsp;&nbsp;
113
114
  <a href="#M000004">session</a>&nbsp;&nbsp;
114
- <a href="#M000012">set</a>&nbsp;&nbsp;
115
+ <a href="#M000013">set</a>&nbsp;&nbsp;
115
116
  <a href="#M000008">use</a>&nbsp;&nbsp;
116
117
  </div>
117
118
  </div>
@@ -206,11 +207,11 @@ Add routes to a controller class
206
207
  In the <tt>get</tt> method, you will receive the maximum of parameters
207
208
  declared by the routes. In this example, you will receive 2 parameters. So
208
209
  if you go to <tt>/hello/world#friend</tt> then <tt>arg1</tt> will be <a
209
- href="Capcode.html#M000012">set</a> to <tt>world</tt> and <tt>arg2</tt>
210
- will be <a href="Capcode.html#M000012">set</a> to <tt>friend</tt>. Now if
210
+ href="Capcode.html#M000013">set</a> to <tt>world</tt> and <tt>arg2</tt>
211
+ will be <a href="Capcode.html#M000013">set</a> to <tt>friend</tt>. Now if
211
212
  you go to <tt>/hello/you</tt>, then <tt>arg1</tt> will be <a
212
- href="Capcode.html#M000012">set</a> to <tt>you</tt> and <tt>arg2</tt> will
213
- be <a href="Capcode.html#M000012">set</a> to <tt>nil</tt>
213
+ href="Capcode.html#M000013">set</a> to <tt>you</tt> and <tt>arg2</tt> will
214
+ be <a href="Capcode.html#M000013">set</a> to <tt>nil</tt>
214
215
  </p>
215
216
  <p>
216
217
  If the regexp in the route does not match, all arguments will be
@@ -220,166 +221,176 @@ If the regexp in the route does not match, all arguments will be
220
221
  onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
221
222
  <div class="method-source-code" id="M000001-source">
222
223
  <pre>
223
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 361</span>
224
- 361: <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>
225
- 362: <span class="ruby-identifier">create_path</span> = <span class="ruby-identifier">routes_paths</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">nil?</span>
226
- 363: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
227
- 364: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>) {
228
- 365: <span class="ruby-identifier">routes_paths</span> = [<span class="ruby-value str">'/'</span><span class="ruby-operator">+</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^Capcode::/</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">underscore</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">create_path</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
229
- 366: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)', :agent =&gt; /Songbird (\d\.\d)[\d\/]*?/</span>
230
- 367: <span class="ruby-comment cmt"># # =&gt; [ {'/hello/world' =&gt; '([^\/]*)/id(\d*)', '/hello' =&gt; '(.*)'}, </span>
231
- 368: <span class="ruby-comment cmt"># 2, </span>
232
- 369: <span class="ruby-comment cmt"># &lt;Capcode::Klass&gt;, </span>
233
- 370: <span class="ruby-comment cmt"># {:agent =&gt; /Songbird (\d\.\d)[\d\/]*?/} ]</span>
234
- 371: <span class="ruby-identifier">hash_of_routes</span> = {}
235
- 372: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-value">0</span>
236
- 373: <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>
237
- 374: <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>
238
- 375: <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> )
239
- 376: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
240
- 377: <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>)
241
- 378: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-value str">''</span>
242
- 379: <span class="ruby-keyword kw">else</span>
243
- 380: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
244
- 381: <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>
245
- 382: <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>)
246
- 383: <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>]
247
- 384: <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>
248
- 385: <span class="ruby-keyword kw">end</span>
249
- 386: <span class="ruby-keyword kw">else</span>
250
- 387: <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>
251
- 388: <span class="ruby-keyword kw">end</span>
252
- 389: <span class="ruby-keyword kw">end</span>
253
- 390: [<span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-keyword kw">self</span>]
254
- 391: }
255
- 392:
256
- 393: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
257
- 394: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
258
- 395: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
259
- 396: <span class="ruby-keyword kw">end</span>
260
- 397:
261
- 398: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
262
- 399: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
263
- 400: <span class="ruby-ivar">@env</span>
264
- 401: <span class="ruby-keyword kw">end</span>
265
- 402:
266
- 403: <span class="ruby-comment cmt"># Session hash</span>
267
- 404: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
268
- 405: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
269
- 406: <span class="ruby-keyword kw">end</span>
270
- 407:
271
- 408: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
272
- 409: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
273
- 410: <span class="ruby-ivar">@request</span>
274
- 411: <span class="ruby-keyword kw">end</span>
275
- 412:
276
- 413: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
277
- 414: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
278
- 415: <span class="ruby-ivar">@response</span>
279
- 416: <span class="ruby-keyword kw">end</span>
280
- 417:
281
- 418: <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>
282
- 419: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
283
- 420: <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>
284
- 421: <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>)
285
- 422:
286
- 423: <span class="ruby-comment cmt"># Check authz</span>
287
- 424: <span class="ruby-identifier">authz_options</span> = <span class="ruby-keyword kw">nil</span>
288
- 425: <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>
289
- 426: <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>
290
- 427: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
291
- 428: <span class="ruby-identifier">route</span> = <span class="ruby-keyword kw">nil</span>
292
- 429:
293
- 430: <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>
294
- 431: <span class="ruby-identifier">regexp</span> = <span class="ruby-node">&quot;^#{r.gsub(/\/$/, &quot;&quot;)}([/]{1}.*)?$&quot;</span>
295
- 432: <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> )
296
- 433: <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>
297
- 434: <span class="ruby-identifier">route</span> = <span class="ruby-identifier">r</span>
298
- 435: <span class="ruby-identifier">authz_options</span> = <span class="ruby-identifier">o</span>
299
- 436: <span class="ruby-keyword kw">end</span>
300
- 437: <span class="ruby-keyword kw">end</span>
301
- 438: <span class="ruby-keyword kw">end</span>
302
- 439: <span class="ruby-keyword kw">end</span>
303
- 440: <span class="ruby-keyword kw">end</span>
304
- 441:
305
- 442: <span class="ruby-identifier">r</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:halt</span>) {
306
- 443: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
307
- 444: <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>] ) {
308
- 445: <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:autz</span>]
309
- 446: }
310
- 447: <span class="ruby-keyword kw">end</span>
224
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 368</span>
225
+ 368: <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>
226
+ 369: <span class="ruby-identifier">create_path</span> = <span class="ruby-identifier">routes_paths</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">nil?</span>
227
+ 370: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
228
+ 371: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>) {
229
+ 372: <span class="ruby-identifier">routes_paths</span> = [<span class="ruby-value str">'/'</span><span class="ruby-operator">+</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^Capcode::/</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">underscore</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">create_path</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
230
+ 373: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)', :agent =&gt; /Songbird (\d\.\d)[\d\/]*?/</span>
231
+ 374: <span class="ruby-comment cmt"># # =&gt; [ {'/hello/world' =&gt; '([^\/]*)/id(\d*)', '/hello' =&gt; '(.*)'}, </span>
232
+ 375: <span class="ruby-comment cmt"># 2, </span>
233
+ 376: <span class="ruby-comment cmt"># &lt;Capcode::Klass&gt;, </span>
234
+ 377: <span class="ruby-comment cmt"># {:agent =&gt; /Songbird (\d\.\d)[\d\/]*?/} ]</span>
235
+ 378: <span class="ruby-identifier">hash_of_routes</span> = {}
236
+ 379: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-value">0</span>
237
+ 380: <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>
238
+ 381: <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>
239
+ 382: <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> )
240
+ 383: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
241
+ 384: <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>)
242
+ 385: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-value str">''</span>
243
+ 386: <span class="ruby-keyword kw">else</span>
244
+ 387: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
245
+ 388: <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>
246
+ 389: <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>)
247
+ 390: <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>]
248
+ 391: <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>
249
+ 392: <span class="ruby-keyword kw">end</span>
250
+ 393: <span class="ruby-keyword kw">else</span>
251
+ 394: <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>
252
+ 395: <span class="ruby-keyword kw">end</span>
253
+ 396: <span class="ruby-keyword kw">end</span>
254
+ 397: [<span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-keyword kw">self</span>]
255
+ 398: }
256
+ 399:
257
+ 400: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
258
+ 401: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
259
+ 402: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
260
+ 403: <span class="ruby-keyword kw">end</span>
261
+ 404:
262
+ 405: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
263
+ 406: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
264
+ 407: <span class="ruby-ivar">@env</span>
265
+ 408: <span class="ruby-keyword kw">end</span>
266
+ 409:
267
+ 410: <span class="ruby-comment cmt"># Session hash</span>
268
+ 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
269
+ 412: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
270
+ 413: <span class="ruby-keyword kw">end</span>
271
+ 414:
272
+ 415: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
273
+ 416: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
274
+ 417: <span class="ruby-ivar">@request</span>
275
+ 418: <span class="ruby-keyword kw">end</span>
276
+ 419:
277
+ 420: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
278
+ 421: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
279
+ 422: <span class="ruby-ivar">@response</span>
280
+ 423: <span class="ruby-keyword kw">end</span>
281
+ 424:
282
+ 425: <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>
283
+ 426: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
284
+ 427: <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>
285
+ 428: <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>)
286
+ 429:
287
+ 430: <span class="ruby-comment cmt"># Check authz</span>
288
+ 431: <span class="ruby-identifier">authz_options</span> = <span class="ruby-keyword kw">nil</span>
289
+ 432: <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>
290
+ 433: <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>
291
+ 434: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
292
+ 435: <span class="ruby-identifier">route</span> = <span class="ruby-keyword kw">nil</span>
293
+ 436:
294
+ 437: <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>
295
+ 438: <span class="ruby-identifier">regexp</span> = <span class="ruby-node">&quot;^#{r.gsub(/\/$/, &quot;&quot;)}([/]{1}.*)?$&quot;</span>
296
+ 439: <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> )
297
+ 440: <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>
298
+ 441: <span class="ruby-identifier">route</span> = <span class="ruby-identifier">r</span>
299
+ 442: <span class="ruby-identifier">authz_options</span> = <span class="ruby-identifier">o</span>
300
+ 443: <span class="ruby-keyword kw">end</span>
301
+ 444: <span class="ruby-keyword kw">end</span>
302
+ 445: <span class="ruby-keyword kw">end</span>
303
+ 446: <span class="ruby-keyword kw">end</span>
304
+ 447: <span class="ruby-keyword kw">end</span>
311
305
  448:
312
- 449: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
313
- 450: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
314
- 451: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
315
- 452:
316
- 453: <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> )
317
- 454: <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>
318
- 455: <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> )
319
- 456: <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>
320
- 457: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
321
- 458: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
322
- 459: <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>
323
- 460: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
324
- 461: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
325
- 462: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
326
- 463: <span class="ruby-keyword kw">end</span>
327
- 464: <span class="ruby-keyword kw">end</span>
328
- 465: <span class="ruby-keyword kw">end</span>
329
- 466:
330
- 467: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">finalNArgs</span> <span class="ruby-operator">&gt;</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>]
331
- 468: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">404</span>, {<span class="ruby-value str">'Content-Type'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text/plain'</span>}, <span class="ruby-node">&quot;Not Found: #{@request.path}&quot;</span>]
332
- 469: <span class="ruby-keyword kw">end</span>
333
- 470:
334
- 471: <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>]
335
- 472: <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>] )
336
- 473: <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> ) )
337
- 474: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
338
- 475: <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>
339
- 476: <span class="ruby-keyword kw">else</span>
340
- 477: <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> }
341
- 478: <span class="ruby-keyword kw">end</span>
342
- 479:
343
- 480: <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>
344
- 481: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
345
- 482: <span class="ruby-keyword kw">end</span>
346
- 483:
347
- 484: <span class="ruby-identifier">filter_output</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">execute</span>( <span class="ruby-keyword kw">self</span> )
348
- 485:
349
- 486: <span class="ruby-keyword kw">if</span>( <span class="ruby-identifier">filter_output</span>.<span class="ruby-identifier">nil?</span> )
350
- 487: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
351
- 488: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;GET&quot;</span>
352
- 489: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
353
- 490: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;POST&quot;</span>
354
- 491: <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> }
355
- 492: <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> )
356
- 493: <span class="ruby-keyword kw">else</span>
357
- 494: <span class="ruby-identifier">_method</span> = <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
358
- 495: <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> )
359
- 496: <span class="ruby-keyword kw">end</span>
360
- 497: <span class="ruby-keyword kw">else</span>
361
- 498: <span class="ruby-identifier">filter_output</span>
362
- 499: <span class="ruby-keyword kw">end</span>
363
- 500: }
364
- 501:
365
- 502: <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>)
366
- 503: <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>
367
- 504: <span class="ruby-comment cmt">#r[1].each do |k,v|</span>
368
- 505: <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>
369
- 506: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
370
- 507: <span class="ruby-keyword kw">end</span>
371
- 508: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[2]</span>
372
- 509: <span class="ruby-keyword kw">else</span>
373
- 510: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
374
- 511: <span class="ruby-keyword kw">end</span>
375
- 512:
376
- 513: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
377
- 514: <span class="ruby-keyword kw">end</span>
378
- 515:
379
- 516: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
380
- 517: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
381
- 518: }
382
- 519: <span class="ruby-keyword kw">end</span>
306
+ 449: <span class="ruby-identifier">r</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:halt</span>) {
307
+ 450: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
308
+ 451: <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>] ) {
309
+ 452: <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:autz</span>]
310
+ 453: }
311
+ 454: <span class="ruby-keyword kw">end</span>
312
+ 455:
313
+ 456: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
314
+ 457: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
315
+ 458: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
316
+ 459:
317
+ 460: <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> )
318
+ 461: <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>
319
+ 462: <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> )
320
+ 463: <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>
321
+ 464: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
322
+ 465: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
323
+ 466: <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>
324
+ 467: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
325
+ 468: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
326
+ 469: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
327
+ 470: <span class="ruby-keyword kw">end</span>
328
+ 471: <span class="ruby-keyword kw">end</span>
329
+ 472: <span class="ruby-keyword kw">end</span>
330
+ 473:
331
+ 474: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">finalNArgs</span> <span class="ruby-operator">&gt;</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>]
332
+ 475: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">404</span>, {<span class="ruby-value str">'Content-Type'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text/plain'</span>}, <span class="ruby-node">&quot;Not Found: #{@request.path}&quot;</span>]
333
+ 476: <span class="ruby-keyword kw">end</span>
334
+ 477:
335
+ 478: <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>]
336
+ 479: <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>] )
337
+ 480: <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> ) )
338
+ 481: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
339
+ 482: <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>
340
+ 483: <span class="ruby-keyword kw">else</span>
341
+ 484: <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> }
342
+ 485: <span class="ruby-keyword kw">end</span>
343
+ 486:
344
+ 487: <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>
345
+ 488: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
346
+ 489: <span class="ruby-keyword kw">end</span>
347
+ 490:
348
+ 491: <span class="ruby-identifier">filter_output</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">execute</span>( <span class="ruby-keyword kw">self</span> )
349
+ 492:
350
+ 493: <span class="ruby-keyword kw">if</span>( <span class="ruby-identifier">filter_output</span>.<span class="ruby-identifier">nil?</span> )
351
+ 494: <span class="ruby-comment cmt"># case @env[&quot;REQUEST_METHOD&quot;]</span>
352
+ 495: <span class="ruby-comment cmt"># when &quot;GET&quot; </span>
353
+ 496: <span class="ruby-comment cmt"># get( *args )</span>
354
+ 497: <span class="ruby-comment cmt"># when &quot;POST&quot;</span>
355
+ 498: <span class="ruby-comment cmt"># _method = params.delete( &quot;_method&quot; ) { |_| &quot;post&quot; }</span>
356
+ 499: <span class="ruby-comment cmt"># send( _method.downcase.to_sym, *args )</span>
357
+ 500: <span class="ruby-comment cmt"># else</span>
358
+ 501: <span class="ruby-comment cmt"># _method = @env[&quot;REQUEST_METHOD&quot;]</span>
359
+ 502: <span class="ruby-comment cmt"># send( _method.downcase.to_sym, *args )</span>
360
+ 503: <span class="ruby-comment cmt"># end</span>
361
+ 504: <span class="ruby-keyword kw">begin</span>
362
+ 505: <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-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>] }
363
+ 506: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">method_defined?</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span> )
364
+ 507: <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> )
365
+ 508: <span class="ruby-keyword kw">else</span>
366
+ 509: <span class="ruby-identifier">any</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
367
+ 510: <span class="ruby-keyword kw">end</span>
368
+ 511: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
369
+ 512: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">class</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>
370
+ 513: <span class="ruby-keyword kw">end</span>
371
+ 514: <span class="ruby-keyword kw">else</span>
372
+ 515: <span class="ruby-identifier">filter_output</span>
373
+ 516: <span class="ruby-keyword kw">end</span>
374
+ 517: }
375
+ 518:
376
+ 519: <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>)
377
+ 520: <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>
378
+ 521: <span class="ruby-comment cmt">#r[1].each do |k,v|</span>
379
+ 522: <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>
380
+ 523: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
381
+ 524: <span class="ruby-keyword kw">end</span>
382
+ 525: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[2]</span>
383
+ 526: <span class="ruby-keyword kw">else</span>
384
+ 527: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
385
+ 528: <span class="ruby-keyword kw">end</span>
386
+ 529:
387
+ 530: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
388
+ 531: <span class="ruby-keyword kw">end</span>
389
+ 532:
390
+ 533: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
391
+ 534: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
392
+ 535: }
393
+ 536: <span class="ruby-keyword kw">end</span>
383
394
  </pre>
384
395
  </div>
385
396
  </div>
@@ -400,104 +411,105 @@ Return the Rack App.
400
411
  </p>
401
412
  <p>
402
413
  Options : see <a
403
- href="Capcode/Configuration.html#M000024">Capcode::Configuration.set</a>
414
+ href="Capcode/Configuration.html#M000026">Capcode::Configuration.set</a>
404
415
  </p>
405
416
  <p>
406
- Options <a href="Capcode.html#M000012">set</a> here replace the ones <a
407
- href="Capcode.html#M000012">set</a> globally
417
+ Options <a href="Capcode.html#M000013">set</a> here replace the ones <a
418
+ href="Capcode.html#M000013">set</a> globally
408
419
  </p>
409
420
  <p><a class="source-toggle" href="#"
410
421
  onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
411
422
  <div class="method-source-code" id="M000010-source">
412
423
  <pre>
413
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 588</span>
414
- 588: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application</span>( <span class="ruby-identifier">args</span> = {} )
415
- 589: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
416
- 590: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">print_debug</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
417
- 591:
418
- 592: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
419
- 593: <span class="ruby-keyword kw">not</span>( <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">k</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Capcode/</span> ) <span class="ruby-keyword kw">or</span> [
420
- 594: <span class="ruby-value str">&quot;Filter&quot;</span>,
421
- 595: <span class="ruby-value str">&quot;Helpers&quot;</span>,
422
- 596: <span class="ruby-value str">&quot;RouteError&quot;</span>,
423
- 597: <span class="ruby-value str">&quot;Views&quot;</span>,
424
- 598: <span class="ruby-value str">&quot;ParameterError&quot;</span>,
425
- 599: <span class="ruby-value str">&quot;HTTPError&quot;</span>,
426
- 600: <span class="ruby-value str">&quot;Configuration&quot;</span>,
427
- 601: <span class="ruby-value str">&quot;MissingLibrary&quot;</span>,
428
- 602: <span class="ruby-value str">&quot;Route&quot;</span>,
429
- 603: <span class="ruby-value str">&quot;RenderError&quot;</span>
430
- 604: ].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">k</span>)
431
- 605: }.<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>
432
- 606: <span class="ruby-keyword kw">begin</span>
433
- 607: <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>
434
- 608: <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>
435
- 609: <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>
436
- 610: <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>
437
- 611: <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>)
438
- 612: <span class="ruby-comment cmt"># Capcode.routes[current_route_path] = klass.new</span>
439
- 613: <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>
440
- 614: <span class="ruby-keyword kw">end</span>
441
- 615: <span class="ruby-keyword kw">end</span>
442
- 616: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
443
- 617: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
444
- 618: <span class="ruby-keyword kw">end</span>
445
- 619: <span class="ruby-keyword kw">end</span>
446
- 620:
447
- 621: <span class="ruby-comment cmt"># Set Static directory</span>
448
- 622: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> = (<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
449
- 623:
450
- 624: <span class="ruby-comment cmt"># Initialize Rack App</span>
451
- 625: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
452
- 626: <span class="ruby-comment cmt"># app = Rack::URLMap.new(Capcode.routes)</span>
453
- 627: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Ext</span><span class="ruby-operator">::</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>)
454
- 628: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{Capcode.static}) in #{File.expand_path(Capcode::Configuration.get(:root))}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
455
- 629: <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>(
456
- 630: <span class="ruby-identifier">app</span>,
457
- 631: <span class="ruby-comment cmt">#:urls =&gt; [@@__STATIC_DIR], </span>
458
- 632: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>],
459
- 633: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>))
460
- 634: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
461
- 635: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
462
- 636: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:session</span>) )
463
- 637: <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>)
464
- 638: <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>)
465
- 639: <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>)
466
- 640: <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>)
467
- 641: <span class="ruby-comment cmt">#app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
468
- 642:
469
- 643: <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>
470
- 644: <span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span> = <span class="ruby-identifier">mw</span>
471
- 645: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
472
- 646: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>
473
- 647: <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> )
474
- 648: <span class="ruby-keyword kw">else</span>
475
- 649: <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> )
476
- 650: <span class="ruby-keyword kw">end</span>
477
- 651: <span class="ruby-keyword kw">end</span>
478
- 652:
479
- 653: <span class="ruby-comment cmt"># Start database</span>
480
- 654: <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>
481
- 655: <span class="ruby-identifier">db_connect</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:db_config</span>), <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>) )
482
- 656: <span class="ruby-keyword kw">end</span>
483
- 657:
484
- 658: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
485
- 659: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Execute block&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
486
- 660: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
487
- 661: <span class="ruby-keyword kw">end</span>
488
- 662:
489
- 663: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">app</span>
490
- 664: <span class="ruby-keyword kw">end</span>
424
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 605</span>
425
+ 605: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application</span>( <span class="ruby-identifier">args</span> = {} )
426
+ 606: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
427
+ 607: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">print_debug</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
428
+ 608:
429
+ 609: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
430
+ 610: <span class="ruby-keyword kw">not</span>( <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">k</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Capcode/</span> ) <span class="ruby-keyword kw">or</span> [
431
+ 611: <span class="ruby-value str">&quot;Filter&quot;</span>,
432
+ 612: <span class="ruby-value str">&quot;Helpers&quot;</span>,
433
+ 613: <span class="ruby-value str">&quot;RouteError&quot;</span>,
434
+ 614: <span class="ruby-value str">&quot;Views&quot;</span>,
435
+ 615: <span class="ruby-value str">&quot;ParameterError&quot;</span>,
436
+ 616: <span class="ruby-value str">&quot;HTTPError&quot;</span>,
437
+ 617: <span class="ruby-value str">&quot;Configuration&quot;</span>,
438
+ 618: <span class="ruby-value str">&quot;MissingLibrary&quot;</span>,
439
+ 619: <span class="ruby-value str">&quot;Route&quot;</span>,
440
+ 620: <span class="ruby-value str">&quot;RenderError&quot;</span>
441
+ 621: ].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">k</span>)
442
+ 622: }.<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>
443
+ 623: <span class="ruby-keyword kw">begin</span>
444
+ 624: <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>
445
+ 625: <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>
446
+ 626: <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>
447
+ 627: <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>
448
+ 628: <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>)
449
+ 629: <span class="ruby-comment cmt"># Capcode.routes[current_route_path] = klass.new</span>
450
+ 630: <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>
451
+ 631: <span class="ruby-keyword kw">end</span>
452
+ 632: <span class="ruby-keyword kw">end</span>
453
+ 633: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
454
+ 634: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
455
+ 635: <span class="ruby-keyword kw">end</span>
456
+ 636: <span class="ruby-keyword kw">end</span>
457
+ 637:
458
+ 638: <span class="ruby-comment cmt"># Set Static directory</span>
459
+ 639: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> = (<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
460
+ 640:
461
+ 641: <span class="ruby-comment cmt"># Initialize Rack App</span>
462
+ 642: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
463
+ 643: <span class="ruby-comment cmt"># app = Rack::URLMap.new(Capcode.routes)</span>
464
+ 644: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Ext</span><span class="ruby-operator">::</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>)
465
+ 645: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{Capcode.static}) in #{File.expand_path(Capcode::Configuration.get(:root))}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
466
+ 646: <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>(
467
+ 647: <span class="ruby-identifier">app</span>,
468
+ 648: <span class="ruby-comment cmt">#:urls =&gt; [@@__STATIC_DIR], </span>
469
+ 649: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>],
470
+ 650: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>))
471
+ 651: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
472
+ 652: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
473
+ 653: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:session</span>) )
474
+ 654: <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>)
475
+ 655: <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>)
476
+ 656: <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>)
477
+ 657: <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>)
478
+ 658: <span class="ruby-comment cmt">#app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
479
+ 659: <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-ivar">@cclogger</span> = <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>)) )
480
+ 660:
481
+ 661: <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>
482
+ 662: <span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span> = <span class="ruby-identifier">mw</span>
483
+ 663: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
484
+ 664: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>
485
+ 665: <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> )
486
+ 666: <span class="ruby-keyword kw">else</span>
487
+ 667: <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> )
488
+ 668: <span class="ruby-keyword kw">end</span>
489
+ 669: <span class="ruby-keyword kw">end</span>
490
+ 670:
491
+ 671: <span class="ruby-comment cmt"># Start database</span>
492
+ 672: <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>
493
+ 673: <span class="ruby-identifier">db_connect</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:db_config</span>), <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>) )
494
+ 674: <span class="ruby-keyword kw">end</span>
495
+ 675:
496
+ 676: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
497
+ 677: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Execute block&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
498
+ 678: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
499
+ 679: <span class="ruby-keyword kw">end</span>
500
+ 680:
501
+ 681: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">app</span>
502
+ 682: <span class="ruby-keyword kw">end</span>
491
503
  </pre>
492
504
  </div>
493
505
  </div>
494
506
  </div>
495
507
 
496
- <div id="method-M000013" class="method-detail">
497
- <a name="M000013"></a>
508
+ <div id="method-M000014" class="method-detail">
509
+ <a name="M000014"></a>
498
510
 
499
511
  <div class="method-heading">
500
- <a href="#M000013" class="method-signature">
512
+ <a href="#M000014" class="method-signature">
501
513
  <span class="method-name">before_filter</span><span class="method-args">( action, opts = {} )</span>
502
514
  </a>
503
515
  </div>
@@ -518,17 +530,18 @@ Add a before filter :
518
530
  If the action return nil, the normal get or post will be executed, else no.
519
531
  </p>
520
532
  <p><a class="source-toggle" href="#"
521
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
522
- <div class="method-source-code" id="M000013-source">
533
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
534
+ <div class="method-source-code" id="M000014-source">
523
535
  <pre>
524
536
  <span class="ruby-comment cmt"># File lib/capcode/filters.rb, line 14</span>
525
537
  14: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">before_filter</span>( <span class="ruby-identifier">action</span>, <span class="ruby-identifier">opts</span> = {} )
526
538
  15: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">filters</span>[<span class="ruby-identifier">action</span>] = { }
527
- 16:
528
- 17: <span class="ruby-identifier">opts</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>
529
- 18: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">filters</span>[<span class="ruby-identifier">action</span>][<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
530
- 19: <span class="ruby-keyword kw">end</span>
531
- 20: <span class="ruby-keyword kw">end</span>
539
+ 16: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">ordered_actions</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">action</span>
540
+ 17:
541
+ 18: <span class="ruby-identifier">opts</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>
542
+ 19: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">filters</span>[<span class="ruby-identifier">action</span>][<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
543
+ 20: <span class="ruby-keyword kw">end</span>
544
+ 21: <span class="ruby-keyword kw">end</span>
532
545
  </pre>
533
546
  </div>
534
547
  </div>
@@ -551,10 +564,10 @@ Hash containing all the environment variables
551
564
  onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
552
565
  <div class="method-source-code" id="M000003-source">
553
566
  <pre>
554
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 399</span>
555
- 399: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
556
- 400: <span class="ruby-ivar">@env</span>
557
- 401: <span class="ruby-keyword kw">end</span>
567
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 406</span>
568
+ 406: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
569
+ 407: <span class="ruby-ivar">@env</span>
570
+ 408: <span class="ruby-keyword kw">end</span>
558
571
  </pre>
559
572
  </div>
560
573
  </div>
@@ -586,7 +599,7 @@ Options :
586
599
 
587
600
  </li>
588
601
  <li><tt>:opaque</tt> : Your secret passphrase. You MUST <a
589
- href="Capcode.html#M000012">set</a> it if you <a
602
+ href="Capcode.html#M000013">set</a> it if you <a
590
603
  href="Capcode.html#M000008">use</a> Digest Auth - default :
591
604
  &quot;opaque&quot;
592
605
 
@@ -609,27 +622,50 @@ The block must return a Hash of username =&gt; password like that :
609
622
  onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
610
623
  <div class="method-source-code" id="M000009-source">
611
624
  <pre>
612
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 562</span>
613
- 562: <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> )
614
- 563: <span class="ruby-identifier">options</span> = {
615
- 564: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:basic</span>,
616
- 565: <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;Capcode.app&quot;</span>,
617
- 566: <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;opaque&quot;</span>,
618
- 567: <span class="ruby-identifier">:routes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;/&quot;</span>
619
- 568: }.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">opts</span> )
620
- 569:
621
- 570: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:autz</span>] = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">call</span>()
622
- 571:
623
- 572: <span class="ruby-ivar">@__auth__</span> <span class="ruby-operator">||=</span> {}
624
- 573:
625
- 574: <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>
626
- 575: <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>
627
- 576: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-identifier">options</span>
628
- 577: <span class="ruby-keyword kw">end</span>
629
- 578: <span class="ruby-keyword kw">else</span>
630
- 579: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>]] = <span class="ruby-identifier">options</span>
631
- 580: <span class="ruby-keyword kw">end</span>
632
- 581: <span class="ruby-keyword kw">end</span>
625
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 579</span>
626
+ 579: <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> )
627
+ 580: <span class="ruby-identifier">options</span> = {
628
+ 581: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:basic</span>,
629
+ 582: <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;Capcode.app&quot;</span>,
630
+ 583: <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;opaque&quot;</span>,
631
+ 584: <span class="ruby-identifier">:routes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;/&quot;</span>
632
+ 585: }.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">opts</span> )
633
+ 586:
634
+ 587: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:autz</span>] = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">call</span>()
635
+ 588:
636
+ 589: <span class="ruby-ivar">@__auth__</span> <span class="ruby-operator">||=</span> {}
637
+ 590:
638
+ 591: <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>
639
+ 592: <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>
640
+ 593: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-identifier">options</span>
641
+ 594: <span class="ruby-keyword kw">end</span>
642
+ 595: <span class="ruby-keyword kw">else</span>
643
+ 596: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>]] = <span class="ruby-identifier">options</span>
644
+ 597: <span class="ruby-keyword kw">end</span>
645
+ 598: <span class="ruby-keyword kw">end</span>
646
+ </pre>
647
+ </div>
648
+ </div>
649
+ </div>
650
+
651
+ <div id="method-M000012" class="method-detail">
652
+ <a name="M000012"></a>
653
+
654
+ <div class="method-heading">
655
+ <a href="#M000012" class="method-signature">
656
+ <span class="method-name">logger</span><span class="method-args">()</span>
657
+ </a>
658
+ </div>
659
+
660
+ <div class="method-description">
661
+ <p><a class="source-toggle" href="#"
662
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
663
+ <div class="method-source-code" id="M000012-source">
664
+ <pre>
665
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 829</span>
666
+ 829: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">logger</span>
667
+ 830: <span class="ruby-ivar">@cclogger</span>
668
+ 831: <span class="ruby-keyword kw">end</span>
633
669
  </pre>
634
670
  </div>
635
671
  </div>
@@ -658,10 +694,10 @@ Rack or What you want Helper
658
694
  onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
659
695
  <div class="method-source-code" id="M000007-source">
660
696
  <pre>
661
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 527</span>
662
- 527: <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> )
663
- 528: <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>
664
- 529: <span class="ruby-keyword kw">end</span>
697
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 544</span>
698
+ 544: <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> )
699
+ 545: <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>
700
+ 546: <span class="ruby-keyword kw">end</span>
665
701
  </pre>
666
702
  </div>
667
703
  </div>
@@ -685,10 +721,10 @@ parameters (GET or POST)
685
721
  onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
686
722
  <div class="method-source-code" id="M000002-source">
687
723
  <pre>
688
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 394</span>
689
- 394: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
690
- 395: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
691
- 396: <span class="ruby-keyword kw">end</span>
724
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 401</span>
725
+ 401: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
726
+ 402: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
727
+ 403: <span class="ruby-keyword kw">end</span>
692
728
  </pre>
693
729
  </div>
694
730
  </div>
@@ -711,10 +747,10 @@ Return the Rack::Request object
711
747
  onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
712
748
  <div class="method-source-code" id="M000005-source">
713
749
  <pre>
714
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 409</span>
715
- 409: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
716
- 410: <span class="ruby-ivar">@request</span>
717
- 411: <span class="ruby-keyword kw">end</span>
750
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 416</span>
751
+ 416: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
752
+ 417: <span class="ruby-ivar">@request</span>
753
+ 418: <span class="ruby-keyword kw">end</span>
718
754
  </pre>
719
755
  </div>
720
756
  </div>
@@ -737,10 +773,10 @@ Return the Rack::Response object
737
773
  onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
738
774
  <div class="method-source-code" id="M000006-source">
739
775
  <pre>
740
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 414</span>
741
- 414: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
742
- 415: <span class="ruby-ivar">@response</span>
743
- 416: <span class="ruby-keyword kw">end</span>
776
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 421</span>
777
+ 421: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
778
+ 422: <span class="ruby-ivar">@response</span>
779
+ 423: <span class="ruby-keyword kw">end</span>
744
780
  </pre>
745
781
  </div>
746
782
  </div>
@@ -761,141 +797,152 @@ Start your <a href="Capcode.html#M000010">application</a>.
761
797
  </p>
762
798
  <p>
763
799
  Options : see <a
764
- href="Capcode/Configuration.html#M000024">Capcode::Configuration.set</a>
800
+ href="Capcode/Configuration.html#M000026">Capcode::Configuration.set</a>
765
801
  </p>
766
802
  <p>
767
- Options <a href="Capcode.html#M000012">set</a> here replace the ones <a
768
- href="Capcode.html#M000012">set</a> globally
803
+ Options <a href="Capcode.html#M000013">set</a> here replace the ones <a
804
+ href="Capcode.html#M000013">set</a> globally
769
805
  </p>
770
806
  <p><a class="source-toggle" href="#"
771
807
  onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
772
808
  <div class="method-source-code" id="M000011-source">
773
809
  <pre>
774
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 671</span>
775
- 671: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
776
- 672: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
777
- 673:
778
- 674: <span class="ruby-comment cmt"># Parse options</span>
779
- 675: <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>
780
- 676: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
781
- 677: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
782
- 678: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
783
- 679:
784
- 680: <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> ) {
785
- 681: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:console</span>, <span class="ruby-keyword kw">true</span>
786
- 682: }
787
- 683: <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: #{Capcode::Configuration.get(:host)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
788
- 684: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:host</span>, <span class="ruby-identifier">h</span>
789
- 685: }
790
- 686: <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: #{Capcode::Configuration.get(:port)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
791
- 687: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:port</span>, <span class="ruby-identifier">p</span>
792
- 688: }
793
- 689: <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: #{Capcode::Configuration.get(:daemonize)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
794
- 690: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:daemonize</span>, <span class="ruby-identifier">d</span>
795
- 691: }
796
- 692: <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: #{Capcode::Configuration.get(:root)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
797
- 693: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:root</span>, <span class="ruby-identifier">w</span>
798
- 694: }
799
- 695: <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: #{Capcode::Configuration.get(:static)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
800
- 696: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:static</span>, <span class="ruby-identifier">r</span>
801
- 697: }
802
- 698:
803
- 699: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
804
- 700: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
805
- 701:
806
- 702: <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>
807
- 703: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
808
- 704: <span class="ruby-identifier">exit</span>
809
- 705: <span class="ruby-keyword kw">end</span>
810
- 706: <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>
811
- 707: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
812
- 708: <span class="ruby-identifier">exit</span>
813
- 709: <span class="ruby-keyword kw">end</span>
814
- 710: <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>
815
- 711: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:verbose</span>, <span class="ruby-keyword kw">true</span>
816
- 712: <span class="ruby-keyword kw">end</span>
817
- 713: <span class="ruby-keyword kw">end</span>
818
- 714:
819
- 715: <span class="ruby-keyword kw">begin</span>
820
- 716: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
821
- 717: <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>
822
- 718: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
823
- 719: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
824
- 720: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
825
- 721: <span class="ruby-keyword kw">end</span>
826
- 722:
827
- 723: <span class="ruby-comment cmt"># Run in the Working directory</span>
828
- 724: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(Capcode::Configuration.get(:root))})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
829
- 725: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>) ) <span class="ruby-keyword kw">do</span>
830
- 726:
831
- 727: <span class="ruby-comment cmt"># Check that mongrel exists </span>
832
- 728: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
833
- 729: <span class="ruby-keyword kw">begin</span>
834
- 730: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
835
- 731: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:mongrel</span>
836
- 732: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
837
- 733: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
838
- 734: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:webrick</span>
839
- 735: <span class="ruby-keyword kw">end</span>
840
- 736: <span class="ruby-keyword kw">end</span>
841
- 737:
842
- 738: <span class="ruby-comment cmt"># From rackup !!!</span>
843
- 739: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:daemonize</span>)
844
- 740: <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>
845
- 741: <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>
846
- 742: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
847
- 743: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
848
- 744: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
849
- 745: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
850
- 746: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
851
- 747: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
852
- 748: <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>
853
- 749: <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>
854
- 750: <span class="ruby-keyword kw">else</span>
855
- 751: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
856
- 752: <span class="ruby-keyword kw">end</span>
857
- 753: <span class="ruby-keyword kw">else</span>
858
- 754: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
859
- 755: <span class="ruby-keyword kw">end</span>
860
- 756:
861
- 757: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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>) }
862
- 758: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:pid</span>)) }
863
- 759: <span class="ruby-keyword kw">end</span>
864
- 760:
865
- 761: <span class="ruby-identifier">app</span> = <span class="ruby-keyword kw">nil</span>
866
- 762: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
867
- 763: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>) { <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> ) }
868
- 764: <span class="ruby-keyword kw">else</span>
869
- 765: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>)
870
- 766: <span class="ruby-keyword kw">end</span>
871
- 767: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>)) )
872
- 768:
873
- 769: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:console</span>)
874
- 770: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
875
- 771: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
876
- 772: <span class="ruby-identifier">exit</span>
877
- 773: <span class="ruby-keyword kw">end</span>
878
- 774:
879
- 775: <span class="ruby-comment cmt"># Start server</span>
880
- 776: <span class="ruby-keyword kw">case</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">to_s</span>
881
- 777: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
882
- 778: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
883
- 779: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
884
- 780: <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> }
885
- 781: }
886
- 782: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
887
- 783: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
888
- 784: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
889
- 785: <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> }
890
- 786: }
891
- 787: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;thin&quot;</span>
892
- 788: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Thin on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
893
- 789: <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">Thin</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
894
- 790: <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> }
895
- 791: }
896
- 792: <span class="ruby-keyword kw">end</span>
897
- 793: <span class="ruby-keyword kw">end</span>
898
- 794: <span class="ruby-keyword kw">end</span>
810
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 689</span>
811
+ 689: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
812
+ 690: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
813
+ 691:
814
+ 692: <span class="ruby-comment cmt"># Parse options</span>
815
+ 693: <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>
816
+ 694: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
817
+ 695: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
818
+ 696: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
819
+ 697:
820
+ 698: <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> ) {
821
+ 699: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:console</span>, <span class="ruby-keyword kw">true</span>
822
+ 700: }
823
+ 701: <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: #{Capcode::Configuration.get(:host)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
824
+ 702: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:host</span>, <span class="ruby-identifier">h</span>
825
+ 703: }
826
+ 704: <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: #{Capcode::Configuration.get(:port)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
827
+ 705: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:port</span>, <span class="ruby-identifier">p</span>
828
+ 706: }
829
+ 707: <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: #{Capcode::Configuration.get(:daemonize)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
830
+ 708: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:daemonize</span>, <span class="ruby-identifier">d</span>
831
+ 709: }
832
+ 710: <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: #{Capcode::Configuration.get(:root)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
833
+ 711: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:root</span>, <span class="ruby-identifier">w</span>
834
+ 712: }
835
+ 713: <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: #{Capcode::Configuration.get(:static)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
836
+ 714: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:static</span>, <span class="ruby-identifier">r</span>
837
+ 715: }
838
+ 716: <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;--server SERVER&quot;</span>, <span class="ruby-node">&quot;Server to use (default: #{Capcode::Configuration.get(:server)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
839
+ 717: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">r</span>
840
+ 718: }
841
+ 719:
842
+ 720: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
843
+ 721: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
844
+ 722:
845
+ 723: <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>
846
+ 724: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
847
+ 725: <span class="ruby-identifier">exit</span>
848
+ 726: <span class="ruby-keyword kw">end</span>
849
+ 727: <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>
850
+ 728: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
851
+ 729: <span class="ruby-identifier">exit</span>
852
+ 730: <span class="ruby-keyword kw">end</span>
853
+ 731: <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>
854
+ 732: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:verbose</span>, <span class="ruby-keyword kw">true</span>
855
+ 733: <span class="ruby-keyword kw">end</span>
856
+ 734: <span class="ruby-keyword kw">end</span>
857
+ 735:
858
+ 736: <span class="ruby-keyword kw">begin</span>
859
+ 737: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
860
+ 738: <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>
861
+ 739: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
862
+ 740: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
863
+ 741: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
864
+ 742: <span class="ruby-keyword kw">end</span>
865
+ 743:
866
+ 744: <span class="ruby-comment cmt"># Run in the Working directory</span>
867
+ 745: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(Capcode::Configuration.get(:root))})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
868
+ 746: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>) ) <span class="ruby-keyword kw">do</span>
869
+ 747:
870
+ 748: <span class="ruby-comment cmt"># Check that mongrel exists </span>
871
+ 749: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
872
+ 750: <span class="ruby-keyword kw">begin</span>
873
+ 751: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
874
+ 752: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:mongrel</span>
875
+ 753: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
876
+ 754: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
877
+ 755: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:webrick</span>
878
+ 756: <span class="ruby-keyword kw">end</span>
879
+ 757: <span class="ruby-keyword kw">end</span>
880
+ 758:
881
+ 759: <span class="ruby-comment cmt"># From rackup !!!</span>
882
+ 760: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:daemonize</span>)
883
+ 761: <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>
884
+ 762: <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>
885
+ 763: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
886
+ 764: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
887
+ 765: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
888
+ 766: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
889
+ 767: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
890
+ 768: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
891
+ 769: <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>
892
+ 770: <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>
893
+ 771: <span class="ruby-keyword kw">else</span>
894
+ 772: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
895
+ 773: <span class="ruby-keyword kw">end</span>
896
+ 774: <span class="ruby-keyword kw">else</span>
897
+ 775: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
898
+ 776: <span class="ruby-keyword kw">end</span>
899
+ 777:
900
+ 778: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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>) }
901
+ 779: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:pid</span>)) }
902
+ 780: <span class="ruby-keyword kw">end</span>
903
+ 781:
904
+ 782: <span class="ruby-identifier">app</span> = <span class="ruby-keyword kw">nil</span>
905
+ 783: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
906
+ 784: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>) { <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> ) }
907
+ 785: <span class="ruby-keyword kw">else</span>
908
+ 786: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>)
909
+ 787: <span class="ruby-keyword kw">end</span>
910
+ 788:
911
+ 789: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:console</span>)
912
+ 790: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
913
+ 791: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
914
+ 792: <span class="ruby-identifier">exit</span>
915
+ 793: <span class="ruby-keyword kw">end</span>
916
+ 794:
917
+ 795: <span class="ruby-comment cmt"># Start server</span>
918
+ 796: <span class="ruby-keyword kw">case</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">to_s</span>
919
+ 797: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
920
+ 798: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
921
+ 799: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
922
+ 800: <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> }
923
+ 801: }
924
+ 802: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
925
+ 803: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
926
+ 804: <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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
927
+ 805: <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> }
928
+ 806: }
929
+ 807: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;thin&quot;</span>
930
+ 808: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Thin on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
931
+ 809: <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">Thin</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-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
932
+ 810: <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> }
933
+ 811: }
934
+ 812: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;unicorn&quot;</span>
935
+ 813: <span class="ruby-identifier">require</span> <span class="ruby-value str">'unicorn/launcher'</span>
936
+ 814: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Unicorn on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
937
+ 815: <span class="ruby-constant">Unicorn</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:listeners</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-node">&quot;#{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>]} )
938
+ 816: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;rainbows&quot;</span>
939
+ 817: <span class="ruby-identifier">require</span> <span class="ruby-value str">'unicorn/launcher'</span>
940
+ 818: <span class="ruby-identifier">require</span> <span class="ruby-value str">'rainbows'</span>
941
+ 819: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Rainbow on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
942
+ 820: <span class="ruby-constant">Rainbows</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:listeners</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-node">&quot;#{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>]} )
943
+ 821: <span class="ruby-keyword kw">end</span>
944
+ 822: <span class="ruby-keyword kw">end</span>
945
+ 823: <span class="ruby-keyword kw">end</span>
899
946
  </pre>
900
947
  </div>
901
948
  </div>
@@ -918,28 +965,28 @@ Session hash
918
965
  onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
919
966
  <div class="method-source-code" id="M000004-source">
920
967
  <pre>
921
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 404</span>
922
- 404: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
923
- 405: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
924
- 406: <span class="ruby-keyword kw">end</span>
968
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 411</span>
969
+ 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
970
+ 412: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
971
+ 413: <span class="ruby-keyword kw">end</span>
925
972
  </pre>
926
973
  </div>
927
974
  </div>
928
975
  </div>
929
976
 
930
- <div id="method-M000012" class="method-detail">
931
- <a name="M000012"></a>
977
+ <div id="method-M000013" class="method-detail">
978
+ <a name="M000013"></a>
932
979
 
933
980
  <div class="method-heading">
934
- <a href="#M000012" class="method-signature">
981
+ <a href="#M000013" class="method-signature">
935
982
  <span class="method-name">set</span><span class="method-args">(key, value, opts = {})</span>
936
983
  </a>
937
984
  </div>
938
985
 
939
986
  <div class="method-description">
940
987
  <p><a class="source-toggle" href="#"
941
- onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
942
- <div class="method-source-code" id="M000012-source">
988
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
989
+ <div class="method-source-code" id="M000013-source">
943
990
  <pre>
944
991
  <span class="ruby-comment cmt"># File lib/capcode/configuration.rb, line 3</span>
945
992
  3: <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>, <span class="ruby-identifier">opts</span> = {}); <span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">opts</span>); <span class="ruby-keyword kw">end</span>
@@ -977,10 +1024,10 @@ Example :
977
1024
  onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
978
1025
  <div class="method-source-code" id="M000008-source">
979
1026
  <pre>
980
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 541</span>
981
- 541: <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>)
982
- 542: <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>]
983
- 543: <span class="ruby-keyword kw">end</span>
1027
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 558</span>
1028
+ 558: <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>)
1029
+ 559: <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>]
1030
+ 560: <span class="ruby-keyword kw">end</span>
984
1031
  </pre>
985
1032
  </div>
986
1033
  </div>