Capcode 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +44 -37
- data/doc/rdoc/classes/Capcode.html +235 -219
- data/doc/rdoc/classes/Capcode/HTTPError.html +1 -1
- data/doc/rdoc/classes/Capcode/Helpers.html +68 -53
- data/doc/rdoc/classes/Capcode/RenderError.html +129 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +59 -36
- data/doc/rdoc/files/lib/capcode_rb.html +2 -1
- data/examples/sample.rb +4 -4
- data/examples/test/index.html +1 -0
- data/lib/capcode.rb +135 -75
- data/lib/capcode/render/erb.rb +7 -3
- data/lib/capcode/render/haml.rb +7 -3
- data/lib/capcode/version.rb +1 -1
- metadata +23 -6
data/README
CHANGED
@@ -10,6 +10,13 @@ Capcode is a web microframework
|
|
10
10
|
|
11
11
|
== FEATURES/PROBLEMS:
|
12
12
|
|
13
|
+
=== 0.5.1
|
14
|
+
* Add :root option to Capcode.run. This option allow you to specify the root directory for static files
|
15
|
+
* Add :working_directory option to Capcode.run. This option allow you to specify the working directory
|
16
|
+
* Of '/' route is not defined but /index.html exist, display index
|
17
|
+
* add mime-types dependency
|
18
|
+
* Bug correction in erb and haml renderer
|
19
|
+
|
13
20
|
=== 0.5.0
|
14
21
|
* Add Haml and Markaby renderer
|
15
22
|
* json is deprecated and replaced by render( :json => ... )
|
@@ -154,47 +161,47 @@ See <tt>examples/blog-dm.rb</tt> and/or <tt>examples/blog-couchdb.rb</tt> for co
|
|
154
161
|
|
155
162
|
=== Render with Haml
|
156
163
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
164
|
+
# file: sample.rb
|
165
|
+
require 'rubygems'
|
166
|
+
require 'capcode'
|
167
|
+
require 'capcode/render/haml'
|
168
|
+
Capcode::Helpers.haml_path = "./my_haml_views"
|
169
|
+
|
170
|
+
module Capcode
|
171
|
+
class Hello < Route '/hello'
|
172
|
+
def get
|
173
|
+
@t = Time.now
|
174
|
+
render :haml => :time
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
Capcode.run( )
|
171
180
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
Hello World
|
179
|
-
= @t
|
181
|
+
# ./my_haml_views/time.haml
|
182
|
+
%html
|
183
|
+
%body
|
184
|
+
%p
|
185
|
+
Hello World
|
186
|
+
= @t
|
180
187
|
|
181
188
|
=== Render with JSON
|
182
189
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
190
|
+
# file: sample.rb
|
191
|
+
require 'rubygems'
|
192
|
+
require 'capcode'
|
193
|
+
require 'capcode/render/json'
|
194
|
+
|
195
|
+
module Capcode
|
196
|
+
class Hello < Route '/hello'
|
197
|
+
def get
|
198
|
+
@t = Time.now
|
199
|
+
render :json => { :time => @t }
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
Capcode.run( )
|
198
205
|
|
199
206
|
== REQUIREMENTS:
|
200
207
|
|
@@ -130,116 +130,116 @@ If the regexp in the route does not match, all arguments will be
|
|
130
130
|
<p class="source-link">[ <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show source</a> ]</p>
|
131
131
|
<div id="M000001_source" class="dyn-source">
|
132
132
|
<pre>
|
133
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
133
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 202</span>
|
134
|
+
202: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Route</span> <span class="ruby-operator">*</span><span class="ruby-identifier">u</span>
|
135
|
+
203: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
|
136
|
+
204: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>){
|
137
|
+
205: <span class="ruby-comment cmt"># < Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)'</span>
|
138
|
+
206: <span class="ruby-comment cmt"># # => [ {'/hello/world' => '([^\/]*)/id(\d*)', '/hello' => '(.*)'}, 2, <Capcode::Klass> ]</span>
|
139
|
+
207: <span class="ruby-identifier">h</span> = {}
|
140
|
+
208: <span class="ruby-identifier">max</span> = <span class="ruby-value">0</span>
|
141
|
+
209: <span class="ruby-identifier">u</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">_u</span><span class="ruby-operator">|</span>
|
142
|
+
210: <span class="ruby-identifier">m</span> = <span class="ruby-regexp re">/\/([^\/]*\(.*)/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">_u</span> )
|
143
|
+
211: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
|
144
|
+
212: <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">"Route `#{_u}' already defined with regexp `#{h[_u]}' !"</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_u</span>)
|
145
|
+
213: <span class="ruby-identifier">h</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-value str">''</span>
|
146
|
+
214: <span class="ruby-keyword kw">else</span>
|
147
|
+
215: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
|
148
|
+
216: <span class="ruby-identifier">_pre</span> = <span class="ruby-value str">"/"</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>
|
149
|
+
217: <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">"Route `#{_pre}' already defined with regexp `#{h[_pre]}' !"</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_pre</span>)
|
150
|
+
218: <span class="ruby-identifier">h</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>]
|
151
|
+
219: <span class="ruby-identifier">max</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</span> <span class="ruby-operator"><</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>
|
152
|
+
220: <span class="ruby-keyword kw">end</span>
|
153
|
+
221: <span class="ruby-keyword kw">end</span>
|
154
|
+
222: [<span class="ruby-identifier">h</span>, <span class="ruby-identifier">max</span>, <span class="ruby-keyword kw">self</span>]
|
155
|
+
223: }
|
156
|
+
224:
|
157
|
+
225: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
|
158
|
+
226: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
|
159
|
+
227: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
|
160
|
+
228: <span class="ruby-keyword kw">end</span>
|
161
|
+
229:
|
162
|
+
230: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
|
163
|
+
231: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
|
164
|
+
232: <span class="ruby-ivar">@env</span>
|
165
|
+
233: <span class="ruby-keyword kw">end</span>
|
166
|
+
234:
|
167
|
+
235: <span class="ruby-comment cmt"># Hash session</span>
|
168
|
+
236: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
|
169
|
+
237: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
|
170
|
+
238: <span class="ruby-keyword kw">end</span>
|
171
|
+
239:
|
172
|
+
240: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
|
173
|
+
241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
|
174
|
+
242: <span class="ruby-ivar">@request</span>
|
175
|
+
243: <span class="ruby-keyword kw">end</span>
|
176
|
+
244:
|
177
|
+
245: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
|
178
|
+
246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
|
179
|
+
247: <span class="ruby-ivar">@response</span>
|
180
|
+
248: <span class="ruby-keyword kw">end</span>
|
181
|
+
249:
|
182
|
+
250: <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>
|
183
|
+
251: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
|
184
|
+
252: <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>
|
185
|
+
253: <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>)
|
186
|
+
254:
|
187
|
+
255: <span class="ruby-identifier">r</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">"REQUEST_METHOD"</span>]
|
188
|
+
256: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"GET"</span>
|
189
|
+
257: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
|
190
|
+
258: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
|
191
|
+
259: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
|
192
|
+
260:
|
193
|
+
261: <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">""</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">"/"</span> )
|
194
|
+
262: <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>
|
195
|
+
263: <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">""</span> ).<span class="ruby-identifier">split</span>( <span class="ruby-value str">"/"</span> )
|
196
|
+
264: <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>
|
197
|
+
265: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
|
198
|
+
266: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span>
|
199
|
+
267: <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">></span> <span class="ruby-identifier">diffNArgs</span>
|
200
|
+
268: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
|
201
|
+
269: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
|
202
|
+
270: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
|
203
|
+
271: <span class="ruby-keyword kw">end</span>
|
204
|
+
272: <span class="ruby-keyword kw">end</span>
|
205
|
+
273:
|
206
|
+
274: <span class="ruby-keyword kw">end</span>
|
207
|
+
275:
|
208
|
+
276: <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>]
|
209
|
+
277: <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>] )
|
210
|
+
278:
|
211
|
+
279: <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">"^#{finalPath}"</span> ), <span class="ruby-value str">""</span> ).<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">""</span> ) )
|
212
|
+
280: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
|
213
|
+
281: <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">"Path info `#{@request.path_info}' does not match route regexp `#{regexp.source}'"</span>
|
214
|
+
282: <span class="ruby-keyword kw">else</span>
|
215
|
+
283: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">captures</span>
|
216
|
+
284: <span class="ruby-keyword kw">end</span>
|
217
|
+
285:
|
218
|
+
286: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">nargs</span>
|
219
|
+
287: <span class="ruby-identifier">args</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">nil</span>
|
220
|
+
288: <span class="ruby-keyword kw">end</span>
|
221
|
+
289:
|
222
|
+
290: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
|
223
|
+
291: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"POST"</span>
|
224
|
+
292: <span class="ruby-identifier">post</span>
|
225
|
+
293: <span class="ruby-keyword kw">end</span>
|
226
|
+
294: <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>)
|
227
|
+
295: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">0</span>]
|
228
|
+
296: <span class="ruby-identifier">r</span>[<span class="ruby-value">1</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>
|
229
|
+
297: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
230
|
+
298: <span class="ruby-keyword kw">end</span>
|
231
|
+
299: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">2</span>]
|
232
|
+
300: <span class="ruby-keyword kw">else</span>
|
233
|
+
301: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
|
234
|
+
302: <span class="ruby-keyword kw">end</span>
|
235
|
+
303:
|
236
|
+
304: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
|
237
|
+
305: <span class="ruby-keyword kw">end</span>
|
238
|
+
306:
|
239
|
+
307: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
|
240
|
+
308: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
|
241
|
+
309: }
|
242
|
+
310: <span class="ruby-keyword kw">end</span>
|
243
243
|
</pre>
|
244
244
|
</div>
|
245
245
|
</div>
|
@@ -254,10 +254,10 @@ Hash containing all the environment variables
|
|
254
254
|
<p class="source-link">[ <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show source</a> ]</p>
|
255
255
|
<div id="M000003_source" class="dyn-source">
|
256
256
|
<pre>
|
257
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
258
|
-
|
259
|
-
|
260
|
-
|
257
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 231</span>
|
258
|
+
231: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
|
259
|
+
232: <span class="ruby-ivar">@env</span>
|
260
|
+
233: <span class="ruby-keyword kw">end</span>
|
261
261
|
</pre>
|
262
262
|
</div>
|
263
263
|
</div>
|
@@ -278,10 +278,10 @@ Rack or What you want Helper
|
|
278
278
|
<p class="source-link">[ <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show source</a> ]</p>
|
279
279
|
<div id="M000007_source" class="dyn-source">
|
280
280
|
<pre>
|
281
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
282
|
-
|
283
|
-
|
284
|
-
|
281
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 317</span>
|
282
|
+
317: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">map</span>( <span class="ruby-identifier">r</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">b</span> )
|
283
|
+
318: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-keyword kw">yield</span>
|
284
|
+
319: <span class="ruby-keyword kw">end</span>
|
285
285
|
</pre>
|
286
286
|
</div>
|
287
287
|
</div>
|
@@ -297,10 +297,10 @@ parameters (GET or POST)
|
|
297
297
|
<p class="source-link">[ <a href="javascript:toggleSource('M000002_source')" id="l_M000002_source">show source</a> ]</p>
|
298
298
|
<div id="M000002_source" class="dyn-source">
|
299
299
|
<pre>
|
300
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
301
|
-
|
302
|
-
|
303
|
-
|
300
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 226</span>
|
301
|
+
226: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
|
302
|
+
227: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
|
303
|
+
228: <span class="ruby-keyword kw">end</span>
|
304
304
|
</pre>
|
305
305
|
</div>
|
306
306
|
</div>
|
@@ -315,10 +315,10 @@ Return the Rack::Request object
|
|
315
315
|
<p class="source-link">[ <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show source</a> ]</p>
|
316
316
|
<div id="M000005_source" class="dyn-source">
|
317
317
|
<pre>
|
318
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
319
|
-
|
320
|
-
|
321
|
-
|
318
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 241</span>
|
319
|
+
241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
|
320
|
+
242: <span class="ruby-ivar">@request</span>
|
321
|
+
243: <span class="ruby-keyword kw">end</span>
|
322
322
|
</pre>
|
323
323
|
</div>
|
324
324
|
</div>
|
@@ -333,10 +333,10 @@ Return the Rack::Response object
|
|
333
333
|
<p class="source-link">[ <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show source</a> ]</p>
|
334
334
|
<div id="M000006_source" class="dyn-source">
|
335
335
|
<pre>
|
336
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
337
|
-
|
338
|
-
|
339
|
-
|
336
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 246</span>
|
337
|
+
246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
|
338
|
+
247: <span class="ruby-ivar">@response</span>
|
339
|
+
248: <span class="ruby-keyword kw">end</span>
|
340
340
|
</pre>
|
341
341
|
</div>
|
342
342
|
</div>
|
@@ -374,6 +374,14 @@ See Rack::Session for more informations
|
|
374
374
|
</li>
|
375
375
|
<li><tt>:db_config</tt> = database configuration file (default: database.yml)
|
376
376
|
|
377
|
+
</li>
|
378
|
+
<li><tt>:root</tt> = root directory (default: "." — relative to
|
379
|
+
the working directory)
|
380
|
+
|
381
|
+
</li>
|
382
|
+
<li><tt>:working_directory</tt> = Working directory (default: directory of the
|
383
|
+
main.rb)
|
384
|
+
|
377
385
|
</li>
|
378
386
|
</ul>
|
379
387
|
|
@@ -381,91 +389,99 @@ See Rack::Session for more informations
|
|
381
389
|
<p class="source-link">[ <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show source</a> ]</p>
|
382
390
|
<div id="M000008_source" class="dyn-source">
|
383
391
|
<pre>
|
384
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
392
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 334</span>
|
393
|
+
334: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
|
394
|
+
335: <span class="ruby-identifier">conf</span> = {
|
395
|
+
336: <span class="ruby-identifier">:port</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:port</span>]<span class="ruby-operator">||</span><span class="ruby-value">3000</span>,
|
396
|
+
337: <span class="ruby-identifier">:host</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:host</span>]<span class="ruby-operator">||</span><span class="ruby-value str">"localhost"</span>,
|
397
|
+
338: <span class="ruby-identifier">:server</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:server</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">nil</span>,
|
398
|
+
339: <span class="ruby-identifier">:log</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:log</span>]<span class="ruby-operator">||</span><span class="ruby-identifier">$stdout</span>,
|
399
|
+
340: <span class="ruby-identifier">:session</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:session</span>]<span class="ruby-operator">||</span>{},
|
400
|
+
341: <span class="ruby-identifier">:pid</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:pid</span>]<span class="ruby-operator">||</span><span class="ruby-node">"#{$0}.pid"</span>,
|
401
|
+
342: <span class="ruby-identifier">:daemonize</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:daemonize</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">false</span>,
|
402
|
+
343: <span class="ruby-identifier">:db_config</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:db_config</span>]<span class="ruby-operator">||</span><span class="ruby-value str">"database.yml"</span>,
|
403
|
+
344: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:root</span>]<span class="ruby-operator">||</span><span class="ruby-value str">"."</span>,
|
404
|
+
345: <span class="ruby-identifier">:working_directory</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:working_directory</span>]<span class="ruby-operator">||</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">$0</span>))
|
405
|
+
346: }
|
406
|
+
347:
|
407
|
+
348: <span class="ruby-comment cmt"># Run in the Working directory</span>
|
408
|
+
349: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:working_directory</span>] ) <span class="ruby-keyword kw">do</span>
|
409
|
+
350: <span class="ruby-comment cmt"># Set root directory for helpers</span>
|
410
|
+
351: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">root</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] )
|
411
|
+
352:
|
412
|
+
353: <span class="ruby-comment cmt"># Check that mongrel exists </span>
|
413
|
+
354: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"mongrel"</span>
|
414
|
+
355: <span class="ruby-keyword kw">begin</span>
|
415
|
+
356: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
|
416
|
+
357: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">"mongrel"</span>
|
417
|
+
358: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
|
418
|
+
359: <span class="ruby-identifier">puts</span> <span class="ruby-value str">"!! could not load mongrel. Falling back to webrick."</span>
|
419
|
+
360: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">"webrick"</span>
|
420
|
+
361: <span class="ruby-keyword kw">end</span>
|
421
|
+
362: <span class="ruby-keyword kw">end</span>
|
422
|
+
363:
|
423
|
+
364: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
|
424
|
+
365: <span class="ruby-keyword kw">begin</span>
|
425
|
+
366: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eval</span> <span class="ruby-node">"Capcode::#{k}.public_methods(true).include?( '__urls__' )"</span>
|
426
|
+
367: <span class="ruby-identifier">u</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">c</span> = <span class="ruby-identifier">eval</span> <span class="ruby-node">"Capcode::#{k}.__urls__"</span>
|
427
|
+
368: <span class="ruby-identifier">u</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">_u</span><span class="ruby-operator">|</span>
|
428
|
+
369: <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">"Route `#{_u}' already define !"</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@@__ROUTES</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_u</span>)
|
429
|
+
370: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">new</span>
|
430
|
+
371: <span class="ruby-keyword kw">end</span>
|
431
|
+
372: <span class="ruby-keyword kw">end</span>
|
432
|
+
373: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
433
|
+
374: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
|
434
|
+
375: <span class="ruby-keyword kw">end</span>
|
435
|
+
376: <span class="ruby-keyword kw">end</span>
|
436
|
+
377:
|
437
|
+
378: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">URLMap</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@@__ROUTES</span>)
|
438
|
+
379: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span><span class="ruby-operator">::</span><span class="ruby-constant">Cookie</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:session</span>] )
|
439
|
+
380: <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>, <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>])
|
440
|
+
381: <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>)
|
441
|
+
382: <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>)
|
442
|
+
383: <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>)
|
443
|
+
384: <span class="ruby-comment cmt"># app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
|
444
|
+
385: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">CommonLogger</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>]) )
|
445
|
+
386:
|
446
|
+
387: <span class="ruby-comment cmt"># From rackup !!!</span>
|
447
|
+
388: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>]
|
448
|
+
389: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator"><</span> <span class="ruby-value str">"1.9"</span>
|
449
|
+
390: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
|
450
|
+
391: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
|
451
|
+
392: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
|
452
|
+
393: <span class="ruby-comment cmt"># Dir.chdir "/"</span>
|
453
|
+
394: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
|
454
|
+
395: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span>
|
455
|
+
396: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span>, <span class="ruby-value str">"a"</span>
|
456
|
+
397: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span>, <span class="ruby-value str">"a"</span>
|
457
|
+
398: <span class="ruby-keyword kw">else</span>
|
458
|
+
399: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
|
459
|
+
400: <span class="ruby-keyword kw">end</span>
|
460
|
+
401:
|
461
|
+
402: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>], <span class="ruby-value str">'w'</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">"#{Process.pid}"</span>) }
|
462
|
+
403: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>]) }
|
463
|
+
404: <span class="ruby-keyword kw">end</span>
|
464
|
+
405:
|
465
|
+
406: <span class="ruby-comment cmt"># Start database</span>
|
466
|
+
407: <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">"db_connect"</span>
|
467
|
+
408: <span class="ruby-identifier">db_connect</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:db_config</span>], <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:log</span>] )
|
468
|
+
409: <span class="ruby-keyword kw">end</span>
|
469
|
+
410:
|
470
|
+
411: <span class="ruby-comment cmt"># Start server</span>
|
471
|
+
412: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>]
|
472
|
+
413: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"mongrel"</span>
|
473
|
+
414: <span class="ruby-identifier">puts</span> <span class="ruby-node">"** Starting Mongrel on #{conf[:host]}:#{conf[:port]}"</span>
|
474
|
+
415: <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">></span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
|
475
|
+
416: <span class="ruby-identifier">trap</span> <span class="ruby-value str">"SIGINT"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span> }
|
476
|
+
417: }
|
477
|
+
418: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"webrick"</span>
|
478
|
+
419: <span class="ruby-identifier">puts</span> <span class="ruby-node">"** Starting WEBrick on #{conf[:host]}:#{conf[:port]}"</span>
|
479
|
+
420: <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">></span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
|
480
|
+
421: <span class="ruby-identifier">trap</span> <span class="ruby-value str">"SIGINT"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">shutdown</span> }
|
481
|
+
422: }
|
482
|
+
423: <span class="ruby-keyword kw">end</span>
|
483
|
+
424: <span class="ruby-keyword kw">end</span>
|
484
|
+
425: <span class="ruby-keyword kw">end</span>
|
469
485
|
</pre>
|
470
486
|
</div>
|
471
487
|
</div>
|
@@ -480,10 +496,10 @@ Hash <a href="Capcode.html#M000004">session</a>
|
|
480
496
|
<p class="source-link">[ <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show source</a> ]</p>
|
481
497
|
<div id="M000004_source" class="dyn-source">
|
482
498
|
<pre>
|
483
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
484
|
-
|
485
|
-
|
486
|
-
|
499
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 236</span>
|
500
|
+
236: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
|
501
|
+
237: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
|
502
|
+
238: <span class="ruby-keyword kw">end</span>
|
487
503
|
</pre>
|
488
504
|
</div>
|
489
505
|
</div>
|