Capcode 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>