Capcode 0.1.0 → 0.2.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 +22 -0
- data/doc/rdoc/classes/Capcode.html +207 -168
- data/doc/rdoc/classes/Capcode/HTTPError.html +1 -0
- data/doc/rdoc/classes/Capcode/Helpers.html +25 -24
- data/doc/rdoc/classes/Capcode/ParameterError.html +1 -0
- data/doc/rdoc/classes/Capcode/RouteError.html +126 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/AUTHORS.html +1 -0
- data/doc/rdoc/files/COPYING.html +1 -0
- data/doc/rdoc/files/README.html +33 -1
- data/doc/rdoc/files/lib/capcode_rb.html +3 -1
- data/examples/{blog.rb → blog-couchdb.rb} +5 -5
- data/examples/blog-couchdb.yml +2 -0
- data/examples/blog-dm.rb +63 -0
- data/examples/blog-dm.yml +2 -0
- data/examples/my_blog.db +0 -0
- data/lib/capcode.rb +40 -3
- data/lib/capcode/base/couchdb.rb +18 -0
- data/lib/capcode/base/dm.rb +28 -0
- data/lib/capcode/core_ext.rb +9 -0
- data/lib/capcode/version.rb +3 -0
- metadata +12 -4
- data/examples/blog.log +0 -16
data/README
CHANGED
@@ -10,6 +10,11 @@ Capcode is a web microframework
|
|
10
10
|
|
11
11
|
== FEATURES/PROBLEMS:
|
12
12
|
|
13
|
+
=== 0.2.0
|
14
|
+
* Add models with DataMapper and couch_foo
|
15
|
+
* Add two new options : :daemonize and :pid
|
16
|
+
* Bug correction in Route.
|
17
|
+
|
13
18
|
=== 0.1.0
|
14
19
|
* First public release
|
15
20
|
* No models !!!
|
@@ -35,6 +40,23 @@ Capcode is a web microframework
|
|
35
40
|
* Run: <tt>ruby sample.rb</tt>
|
36
41
|
* Visit http://localhost:3000/
|
37
42
|
|
43
|
+
== Create model
|
44
|
+
|
45
|
+
require 'rubygems'
|
46
|
+
require 'capcode'
|
47
|
+
require 'capcode/base/dm' # or require 'capcode/base/couchdb'
|
48
|
+
|
49
|
+
class Story < Capcode::Base
|
50
|
+
include Capcode::Resource
|
51
|
+
|
52
|
+
property :id, Integer, :serial => true # only with DataMapper !
|
53
|
+
property :title, String
|
54
|
+
property :body, String
|
55
|
+
property :date, String
|
56
|
+
end
|
57
|
+
|
58
|
+
See <tt>examples/blog-dm.rb</tt> and/or <tt>examples/blog-couchdb.rb</tt> for complete examples.
|
59
|
+
|
38
60
|
== REQUIREMENTS:
|
39
61
|
|
40
62
|
* rack
|
@@ -68,6 +68,7 @@
|
|
68
68
|
<a href="../classes/Capcode.html" title="Module: Capcode">Capcode</a>.view_html<br />
|
69
69
|
<a href="../classes/Capcode/Helpers.html" title="Module: Capcode::Helpers">Capcode::Helpers</a>.view_html<br />
|
70
70
|
<a href="../classes/Capcode/HTTPError.html" title="Class: Capcode::HTTPError">Capcode::HTTPError</a>.view_html<br />
|
71
|
+
<a href="../classes/Capcode/RouteError.html" title="Class: Capcode::RouteError">Capcode::RouteError</a>.view_html<br />
|
71
72
|
<a href="../classes/Capcode/ParameterError.html" title="Class: Capcode::ParameterError">Capcode::ParameterError</a>.view_html<br />
|
72
73
|
end</strong>
|
73
74
|
</td></tr>
|
@@ -126,94 +127,98 @@ If the regexp in the route does not match, all arguments will be
|
|
126
127
|
<p class="source-link">[ <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show source</a> ]</p>
|
127
128
|
<div id="M000001_source" class="dyn-source">
|
128
129
|
<pre>
|
129
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
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
|
-
186: <span class="ruby-keyword kw">else</span>
|
190
|
-
187: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">captures</span>
|
191
|
-
188: <span class="ruby-keyword kw">end</span>
|
130
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 130</span>
|
131
|
+
130: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Route</span> <span class="ruby-operator">*</span><span class="ruby-identifier">u</span>
|
132
|
+
131: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
|
133
|
+
132: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>){
|
134
|
+
133: <span class="ruby-comment cmt"># < Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)'</span>
|
135
|
+
134: <span class="ruby-comment cmt"># # => [ {'/hello/world' => '([^\/]*)/id(\d*)', '/hello' => '(.*)'}, 2, <Capcode::Klass> ]</span>
|
136
|
+
135: <span class="ruby-identifier">h</span> = {}
|
137
|
+
136: <span class="ruby-identifier">max</span> = <span class="ruby-value">0</span>
|
138
|
+
137: <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>
|
139
|
+
138: <span class="ruby-identifier">m</span> = <span class="ruby-regexp re">/\/([^\/]*\(.*)/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">_u</span> )
|
140
|
+
139: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
|
141
|
+
140: <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>)
|
142
|
+
141: <span class="ruby-identifier">h</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-value str">''</span>
|
143
|
+
142: <span class="ruby-keyword kw">else</span>
|
144
|
+
143: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
|
145
|
+
144: <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>
|
146
|
+
145: <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>)
|
147
|
+
146: <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>]
|
148
|
+
147: <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>
|
149
|
+
148: <span class="ruby-keyword kw">end</span>
|
150
|
+
149: <span class="ruby-keyword kw">end</span>
|
151
|
+
150: [<span class="ruby-identifier">h</span>, <span class="ruby-identifier">max</span>, <span class="ruby-keyword kw">self</span>]
|
152
|
+
151: }
|
153
|
+
152:
|
154
|
+
153: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
|
155
|
+
154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
|
156
|
+
155: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
|
157
|
+
156: <span class="ruby-keyword kw">end</span>
|
158
|
+
157:
|
159
|
+
158: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
|
160
|
+
159: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
|
161
|
+
160: <span class="ruby-ivar">@env</span>
|
162
|
+
161: <span class="ruby-keyword kw">end</span>
|
163
|
+
162:
|
164
|
+
163: <span class="ruby-comment cmt"># Hash session</span>
|
165
|
+
164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
|
166
|
+
165: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
|
167
|
+
166: <span class="ruby-keyword kw">end</span>
|
168
|
+
167:
|
169
|
+
168: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
|
170
|
+
169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
|
171
|
+
170: <span class="ruby-ivar">@request</span>
|
172
|
+
171: <span class="ruby-keyword kw">end</span>
|
173
|
+
172:
|
174
|
+
173: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
|
175
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
|
176
|
+
175: <span class="ruby-ivar">@response</span>
|
177
|
+
176: <span class="ruby-keyword kw">end</span>
|
178
|
+
177:
|
179
|
+
178: <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>
|
180
|
+
179: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
|
181
|
+
180: <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>
|
182
|
+
181: <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>)
|
183
|
+
182:
|
184
|
+
183: <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>]
|
185
|
+
184: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"GET"</span>
|
186
|
+
185: <span class="ruby-identifier">sc</span> = <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">script_name</span>
|
187
|
+
186: <span class="ruby-identifier">sc</span> = <span class="ruby-value str">"/"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
188
|
+
187: <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">sc</span>] )
|
189
|
+
188: <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>]
|
192
190
|
189:
|
193
|
-
190: <span class="ruby-
|
194
|
-
191:
|
195
|
-
192:
|
196
|
-
193:
|
197
|
-
194:
|
198
|
-
195:
|
199
|
-
196:
|
200
|
-
197:
|
201
|
-
198:
|
202
|
-
199:
|
203
|
-
200:
|
204
|
-
201: <span class="ruby-
|
205
|
-
202: <span class="ruby-keyword kw">
|
206
|
-
203:
|
207
|
-
204: <span class="ruby-keyword kw">
|
208
|
-
205:
|
209
|
-
206:
|
210
|
-
207:
|
211
|
-
208:
|
212
|
-
209:
|
213
|
-
210:
|
214
|
-
211:
|
215
|
-
212:
|
216
|
-
213:
|
191
|
+
190: <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_info</span>).<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^\//</span>, <span class="ruby-value str">""</span> ) )
|
192
|
+
191: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
|
193
|
+
192: <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>
|
194
|
+
193: <span class="ruby-keyword kw">else</span>
|
195
|
+
194: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">captures</span>
|
196
|
+
195: <span class="ruby-keyword kw">end</span>
|
197
|
+
196:
|
198
|
+
197: <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>
|
199
|
+
198: <span class="ruby-identifier">args</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">nil</span>
|
200
|
+
199: <span class="ruby-keyword kw">end</span>
|
201
|
+
200:
|
202
|
+
201: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
|
203
|
+
202: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"POST"</span>
|
204
|
+
203: <span class="ruby-identifier">post</span>
|
205
|
+
204: <span class="ruby-keyword kw">end</span>
|
206
|
+
205: <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>)
|
207
|
+
206: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">0</span>]
|
208
|
+
207: <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>
|
209
|
+
208: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
210
|
+
209: <span class="ruby-keyword kw">end</span>
|
211
|
+
210: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">2</span>]
|
212
|
+
211: <span class="ruby-keyword kw">else</span>
|
213
|
+
212: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
|
214
|
+
213: <span class="ruby-keyword kw">end</span>
|
215
|
+
214:
|
216
|
+
215: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
|
217
|
+
216: <span class="ruby-keyword kw">end</span>
|
218
|
+
217:
|
219
|
+
218: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
|
220
|
+
219: }
|
221
|
+
220: <span class="ruby-keyword kw">end</span>
|
217
222
|
</pre>
|
218
223
|
</div>
|
219
224
|
</div>
|
@@ -228,10 +233,10 @@ Hash containing all the environment variables
|
|
228
233
|
<p class="source-link">[ <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show source</a> ]</p>
|
229
234
|
<div id="M000003_source" class="dyn-source">
|
230
235
|
<pre>
|
231
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
232
|
-
|
233
|
-
|
234
|
-
|
236
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 159</span>
|
237
|
+
159: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
|
238
|
+
160: <span class="ruby-ivar">@env</span>
|
239
|
+
161: <span class="ruby-keyword kw">end</span>
|
235
240
|
</pre>
|
236
241
|
</div>
|
237
242
|
</div>
|
@@ -252,10 +257,10 @@ Rack or What you want Helper
|
|
252
257
|
<p class="source-link">[ <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show source</a> ]</p>
|
253
258
|
<div id="M000007_source" class="dyn-source">
|
254
259
|
<pre>
|
255
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
256
|
-
|
257
|
-
|
258
|
-
|
260
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 227</span>
|
261
|
+
227: <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> )
|
262
|
+
228: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-keyword kw">yield</span>
|
263
|
+
229: <span class="ruby-keyword kw">end</span>
|
259
264
|
</pre>
|
260
265
|
</div>
|
261
266
|
</div>
|
@@ -271,10 +276,10 @@ parameters (GET or POST)
|
|
271
276
|
<p class="source-link">[ <a href="javascript:toggleSource('M000002_source')" id="l_M000002_source">show source</a> ]</p>
|
272
277
|
<div id="M000002_source" class="dyn-source">
|
273
278
|
<pre>
|
274
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
275
|
-
|
276
|
-
|
277
|
-
|
279
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 154</span>
|
280
|
+
154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
|
281
|
+
155: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
|
282
|
+
156: <span class="ruby-keyword kw">end</span>
|
278
283
|
</pre>
|
279
284
|
</div>
|
280
285
|
</div>
|
@@ -289,10 +294,10 @@ Return the Rack::Request object
|
|
289
294
|
<p class="source-link">[ <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show source</a> ]</p>
|
290
295
|
<div id="M000005_source" class="dyn-source">
|
291
296
|
<pre>
|
292
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
293
|
-
|
294
|
-
|
295
|
-
|
297
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 169</span>
|
298
|
+
169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
|
299
|
+
170: <span class="ruby-ivar">@request</span>
|
300
|
+
171: <span class="ruby-keyword kw">end</span>
|
296
301
|
</pre>
|
297
302
|
</div>
|
298
303
|
</div>
|
@@ -307,10 +312,10 @@ Return the Rack::Response object
|
|
307
312
|
<p class="source-link">[ <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show source</a> ]</p>
|
308
313
|
<div id="M000006_source" class="dyn-source">
|
309
314
|
<pre>
|
310
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
311
|
-
|
312
|
-
|
313
|
-
|
315
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 174</span>
|
316
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
|
317
|
+
175: <span class="ruby-ivar">@response</span>
|
318
|
+
176: <span class="ruby-keyword kw">end</span>
|
314
319
|
</pre>
|
315
320
|
</div>
|
316
321
|
</div>
|
@@ -339,6 +344,12 @@ Options :
|
|
339
344
|
<li><tt>:<a href="Capcode.html#M000004">session</a></tt> = Session parameters.
|
340
345
|
See Rack::Session for more informations
|
341
346
|
|
347
|
+
</li>
|
348
|
+
<li><tt>:pid</tt> = PID file (default: $0.pid)
|
349
|
+
|
350
|
+
</li>
|
351
|
+
<li><tt>:daemonize</tt> = Daemonize application (default: false)
|
352
|
+
|
342
353
|
</li>
|
343
354
|
</ul>
|
344
355
|
|
@@ -346,63 +357,91 @@ See Rack::Session for more informations
|
|
346
357
|
<p class="source-link">[ <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show source</a> ]</p>
|
347
358
|
<div id="M000008_source" class="dyn-source">
|
348
359
|
<pre>
|
349
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
360
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 241</span>
|
361
|
+
241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
|
362
|
+
242: <span class="ruby-identifier">conf</span> = {
|
363
|
+
243: <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>,
|
364
|
+
244: <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>,
|
365
|
+
245: <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>,
|
366
|
+
246: <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>,
|
367
|
+
247: <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>{},
|
368
|
+
248: <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>,
|
369
|
+
249: <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>,
|
370
|
+
250: <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>
|
371
|
+
251: }
|
372
|
+
252:
|
373
|
+
253: <span class="ruby-comment cmt"># Check that mongrel exists </span>
|
374
|
+
254: <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>
|
375
|
+
255: <span class="ruby-keyword kw">begin</span>
|
376
|
+
256: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
|
377
|
+
257: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">"mongrel"</span>
|
378
|
+
258: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
|
379
|
+
259: <span class="ruby-identifier">puts</span> <span class="ruby-value str">"!! could not load mongrel. Falling back to webrick."</span>
|
380
|
+
260: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">"webrick"</span>
|
381
|
+
261: <span class="ruby-keyword kw">end</span>
|
382
|
+
262: <span class="ruby-keyword kw">end</span>
|
383
|
+
263:
|
384
|
+
264: <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>
|
385
|
+
265: <span class="ruby-keyword kw">begin</span>
|
386
|
+
266: <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>
|
387
|
+
267: <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>
|
388
|
+
268: <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>
|
389
|
+
269: <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>)
|
390
|
+
270: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">new</span>
|
391
|
+
271: <span class="ruby-keyword kw">end</span>
|
392
|
+
272: <span class="ruby-keyword kw">end</span>
|
393
|
+
273: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
394
|
+
274: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
|
395
|
+
275: <span class="ruby-keyword kw">end</span>
|
396
|
+
276: <span class="ruby-keyword kw">end</span>
|
397
|
+
277:
|
398
|
+
278: <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>)
|
399
|
+
279: <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>] )
|
400
|
+
280: <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>)
|
401
|
+
281: <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>)
|
402
|
+
282: <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>)
|
403
|
+
283: <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>)
|
404
|
+
284: <span class="ruby-comment cmt"># app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
|
405
|
+
285: <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>]) )
|
406
|
+
286:
|
407
|
+
287: <span class="ruby-comment cmt"># From rackup !!!</span>
|
408
|
+
288: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>]
|
409
|
+
289: <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>
|
410
|
+
290: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
|
411
|
+
291: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
|
412
|
+
292: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
|
413
|
+
293: <span class="ruby-comment cmt"># Dir.chdir "/"</span>
|
414
|
+
294: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
|
415
|
+
295: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span>
|
416
|
+
296: <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>
|
417
|
+
297: <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>
|
418
|
+
298: <span class="ruby-keyword kw">else</span>
|
419
|
+
299: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
|
420
|
+
300: <span class="ruby-keyword kw">end</span>
|
421
|
+
301:
|
422
|
+
302: <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>) }
|
423
|
+
303: <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>]) }
|
424
|
+
304: <span class="ruby-keyword kw">end</span>
|
425
|
+
305:
|
426
|
+
306: <span class="ruby-comment cmt"># Start database</span>
|
427
|
+
307: <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>
|
428
|
+
308: <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>] )
|
429
|
+
309: <span class="ruby-keyword kw">end</span>
|
430
|
+
310:
|
431
|
+
311: <span class="ruby-comment cmt"># Start server</span>
|
432
|
+
312: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>]
|
433
|
+
313: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"mongrel"</span>
|
434
|
+
314: <span class="ruby-identifier">puts</span> <span class="ruby-node">"** Starting Mongrel on #{conf[:host]}:#{conf[:port]}"</span>
|
435
|
+
315: <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>
|
436
|
+
316: <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> }
|
437
|
+
317: }
|
438
|
+
318: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"webrick"</span>
|
439
|
+
319: <span class="ruby-identifier">puts</span> <span class="ruby-node">"** Starting WEBrick on #{conf[:host]}:#{conf[:port]}"</span>
|
440
|
+
320: <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>
|
441
|
+
321: <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> }
|
442
|
+
322: }
|
443
|
+
323: <span class="ruby-keyword kw">end</span>
|
444
|
+
324: <span class="ruby-keyword kw">end</span>
|
406
445
|
</pre>
|
407
446
|
</div>
|
408
447
|
</div>
|
@@ -417,10 +456,10 @@ Hash <a href="Capcode.html#M000004">session</a>
|
|
417
456
|
<p class="source-link">[ <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show source</a> ]</p>
|
418
457
|
<div id="M000004_source" class="dyn-source">
|
419
458
|
<pre>
|
420
|
-
<span class="ruby-comment cmt"># File lib/capcode.rb, line
|
421
|
-
|
422
|
-
|
423
|
-
|
459
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 164</span>
|
460
|
+
164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
|
461
|
+
165: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
|
462
|
+
166: <span class="ruby-keyword kw">end</span>
|
424
463
|
</pre>
|
425
464
|
</div>
|
426
465
|
</div>
|