Capcode 0.8.2 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/{README → README.rdoc} +12 -1
  2. data/examples/haml/cf_layout.haml +1 -0
  3. data/examples/haml/style.sass +2 -0
  4. data/examples/render-erb.rb +14 -0
  5. data/examples/render-haml_sass.rb +22 -0
  6. data/examples/render-json.rb +13 -0
  7. data/examples/render-markaby.rb +27 -0
  8. data/examples/render-static.rb +18 -0
  9. data/examples/render-text.rb +12 -0
  10. data/examples/render-xml.rb +24 -0
  11. data/examples/rest.rb +77 -0
  12. data/examples/upload.rb +4 -4
  13. data/lib/capcode.rb +118 -44
  14. data/lib/capcode/base/db.rb +23 -0
  15. data/lib/capcode/base/dm.rb +11 -11
  16. data/lib/capcode/render/erb.rb +5 -3
  17. data/lib/capcode/render/haml.rb +3 -2
  18. data/lib/capcode/render/json.rb +1 -1
  19. data/lib/capcode/render/markaby.rb +5 -5
  20. data/lib/capcode/render/sass.rb +4 -2
  21. data/lib/capcode/render/static.rb +6 -2
  22. data/lib/capcode/render/text.rb +1 -1
  23. data/lib/capcode/render/xml.rb +3 -5
  24. data/lib/capcode/version.rb +1 -1
  25. metadata +25 -55
  26. data/doc/rdoc/classes/Capcode.html +0 -605
  27. data/doc/rdoc/classes/Capcode/HTTPError.html +0 -129
  28. data/doc/rdoc/classes/Capcode/Helpers.html +0 -342
  29. data/doc/rdoc/classes/Capcode/RenderError.html +0 -129
  30. data/doc/rdoc/classes/Capcode/Views.html +0 -108
  31. data/doc/rdoc/created.rid +0 -1
  32. data/doc/rdoc/files/AUTHORS.html +0 -103
  33. data/doc/rdoc/files/COPYING.html +0 -527
  34. data/doc/rdoc/files/README.html +0 -478
  35. data/doc/rdoc/files/lib/capcode_rb.html +0 -541
  36. data/doc/rdoc/index.html +0 -10
  37. data/doc/rdoc/permalink.gif +0 -0
  38. data/doc/rdoc/rdoc-style.css +0 -106
  39. data/doc/rdoc/rubyfr.png +0 -0
  40. data/doc/rdoc_iphone/classes/Capcode.html +0 -175
  41. data/doc/rdoc_iphone/classes/Capcode/HTTPError.html +0 -21
  42. data/doc/rdoc_iphone/classes/Capcode/Helpers.html +0 -153
  43. data/doc/rdoc_iphone/classes/Capcode/RenderError.html +0 -21
  44. data/doc/rdoc_iphone/classes/Capcode/Views.html +0 -21
  45. data/doc/rdoc_iphone/classes_index.html +0 -10
  46. data/doc/rdoc_iphone/created.rid +0 -1
  47. data/doc/rdoc_iphone/files/AUTHORS.html +0 -11
  48. data/doc/rdoc_iphone/files/COPYING.html +0 -435
  49. data/doc/rdoc_iphone/files/README.html +0 -325
  50. data/doc/rdoc_iphone/files/lib/capcode_rb.html +0 -435
  51. data/doc/rdoc_iphone/files_index.html +0 -7
  52. data/doc/rdoc_iphone/index.html +0 -51
  53. data/doc/rdoc_iphone/iui/backButton.png +0 -0
  54. data/doc/rdoc_iphone/iui/blueButton.png +0 -0
  55. data/doc/rdoc_iphone/iui/cancel.png +0 -0
  56. data/doc/rdoc_iphone/iui/grayButton.png +0 -0
  57. data/doc/rdoc_iphone/iui/iui-logo-touch-icon.png +0 -0
  58. data/doc/rdoc_iphone/iui/iui.css +0 -386
  59. data/doc/rdoc_iphone/iui/iui.js +0 -442
  60. data/doc/rdoc_iphone/iui/iuix.css +0 -1
  61. data/doc/rdoc_iphone/iui/iuix.js +0 -1
  62. data/doc/rdoc_iphone/iui/listArrow.png +0 -0
  63. data/doc/rdoc_iphone/iui/listArrowSel.png +0 -0
  64. data/doc/rdoc_iphone/iui/listGroup.png +0 -0
  65. data/doc/rdoc_iphone/iui/loading.gif +0 -0
  66. data/doc/rdoc_iphone/iui/pinstripes.png +0 -0
  67. data/doc/rdoc_iphone/iui/selection.png +0 -0
  68. data/doc/rdoc_iphone/iui/thumb.png +0 -0
  69. data/doc/rdoc_iphone/iui/toggle.png +0 -0
  70. data/doc/rdoc_iphone/iui/toggleOn.png +0 -0
  71. data/doc/rdoc_iphone/iui/toolButton.png +0 -0
  72. data/doc/rdoc_iphone/iui/toolbar.png +0 -0
  73. data/doc/rdoc_iphone/iui/whiteButton.png +0 -0
  74. data/doc/rdoc_iphone/rdoc-style.css +0 -0
@@ -0,0 +1,23 @@
1
+ module Capcode
2
+ # This module contains the resources needed in a model
3
+ module Resource
4
+ end
5
+
6
+ # This class allow you to define models
7
+ #
8
+ # class Story < Capcode::Base
9
+ # include Capcode::Resource
10
+ #
11
+ # property :id, Integer, :serial => true
12
+ # property :title, String
13
+ # property :body, String
14
+ # property :date, String
15
+ # end
16
+ #
17
+ # If you want to use DataMapper, you need to require "capcode/base/dm", if
18
+ # you want to use CouchDB (via couch_foo), you need to require "capcode/base/couchdb".
19
+ #
20
+ # Please, refer to the DataMapper or couch_foo documentation for more information.
21
+ class Base
22
+ end
23
+ end
@@ -3,18 +3,18 @@ require 'dm-core'
3
3
  require 'yaml'
4
4
  require 'logger'
5
5
 
6
- # use DataMapper
7
- #
8
- # class Story < Capcode::Base
9
- # include Capcode::Base
10
- # property :id, Integer, :serial => true
11
- # property :title, String
12
- # property :body, String
13
- # property :date, String
14
- # end
15
- module Capcode
6
+ module Capcode
16
7
  Resource = DataMapper::Resource
17
-
8
+
9
+ # use DataMapper
10
+ #
11
+ # class Story < Capcode::Base
12
+ # include Capcode::Base
13
+ # property :id, Integer, :serial => true
14
+ # property :title, String
15
+ # property :body, String
16
+ # property :date, String
17
+ # end
18
18
  class Base
19
19
  end
20
20
 
@@ -3,17 +3,19 @@ require 'erb'
3
3
  module Capcode
4
4
  module Helpers
5
5
  @@__ERB_PATH__ = "."
6
- def self.erb_path=( p )
6
+
7
+ # Set the path to ERB files. If this path is not set, Capcode will search in the static path.
8
+ def self.erb_path=( p ) #:nodoc:
7
9
  @@__ERB_PATH__ = p
8
10
  end
9
11
 
10
- def get_binding
12
+ def get_binding #:nodoc:
11
13
  binding
12
14
  end
13
15
 
14
16
  def render_erb( f, opts ) #:nodoc:
15
17
  if @@__ERB_PATH__.nil?
16
- @@__ERB_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static:''
18
+ @@__ERB_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static():''
17
19
  end
18
20
 
19
21
  f = f.to_s
@@ -3,13 +3,14 @@ require "haml"
3
3
  module Capcode
4
4
  module Helpers
5
5
  @@__HAML_PATH__ = nil
6
- def self.haml_path=( p )
6
+ # Set the path to Haml files. If this path is not set, Capcode will search in the static path.
7
+ def self.haml_path=( p ) #:nodoc:
7
8
  @@__HAML_PATH__ = p
8
9
  end
9
10
 
10
11
  def render_haml( f, opts ) #:nodoc:
11
12
  if @@__HAML_PATH__.nil?
12
- @@__HAML_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static:''
13
+ @@__HAML_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static():''
13
14
  end
14
15
 
15
16
  f = f.to_s
@@ -2,7 +2,7 @@ require 'json'
2
2
 
3
3
  module Capcode
4
4
  module Helpers
5
- def render_json( f, opts )
5
+ def render_json( f, opts ) #:nodoc:
6
6
  @response['Content-Type'] = 'application/json'
7
7
  f.to_json
8
8
  end
@@ -3,7 +3,7 @@ require "markaby"
3
3
  Markaby::Builder.set(:indent, 2)
4
4
 
5
5
  module Capcode
6
- class Markaby::Builder
6
+ class Mab < Markaby::Builder
7
7
  include Views
8
8
  end
9
9
 
@@ -11,8 +11,8 @@ module Capcode
11
11
  def render_markaby( f, opts ) #:nodoc:
12
12
  f = f.to_s
13
13
  layout = opts.delete(:layout)||:layout
14
-
15
- mab = Markaby::Builder.new({}, self) {
14
+
15
+ __mab = Mab.new({}, self) {
16
16
  if self.respond_to?(layout)
17
17
  self.send(layout.to_s) { |*args|
18
18
  @@__ARGS__ = args
@@ -22,7 +22,7 @@ module Capcode
22
22
  self.send(f)
23
23
  end
24
24
  }
25
- mab.to_s
25
+ __mab.to_s
26
26
  end
27
27
  end
28
- end
28
+ end
@@ -3,13 +3,15 @@ require "sass"
3
3
  module Capcode
4
4
  module Helpers
5
5
  @@__SASS_PATH__ = "."
6
- def self.sass_path=( p )
6
+
7
+ # Set the path to Sass files. If this path is not set, Capcode will search in the static path.
8
+ def self.sass_path=( p ) #:nodoc:
7
9
  @@__SASS_PATH__ = p
8
10
  end
9
11
 
10
12
  def render_sass( f, _ ) #:nodoc:
11
13
  if @@__SASS_PATH__.nil?
12
- @@__SASS_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static:''
14
+ @@__SASS_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static():''
13
15
  end
14
16
 
15
17
  f = f.to_s
@@ -1,10 +1,14 @@
1
1
  module Capcode
2
2
  module Helpers
3
- def render_static( f, _ )
3
+ def render_static( f, opts = { :exact_path => true } ) #:nodoc:
4
4
  if Capcode.static.nil? or f.include? '..'
5
5
  return [403, {}, '403 - Invalid path']
6
6
  end
7
- redirect File.join( Capcode.static, f )
7
+ if !opts.keys.include?(:exact_path) or opts[:exact_path] == true
8
+ redirect File.join( static[:uri], f )
9
+ else
10
+ File.read( File.join( static[:path], f ) ).to_s
11
+ end
8
12
  end
9
13
  end
10
14
  end
@@ -1,6 +1,6 @@
1
1
  module Capcode
2
2
  module Helpers
3
- def render_text( f, _ )
3
+ def render_text( f, _ ) #:nodoc:
4
4
  f
5
5
  end
6
6
  end
@@ -1,10 +1,8 @@
1
- # To use the XML renderer, you first need to require 'capcode/render/xml'
2
-
3
- class XML #:nodoc:
4
- class TagError < ArgumentError #:nodoc:
1
+ class XML #:nodoc: all
2
+ class TagError < ArgumentError
5
3
  end
6
4
 
7
- class DSL #:nodoc:
5
+ class DSL
8
6
  def initialize( helper, &block )
9
7
  @__x_d_level = 0
10
8
  @__x_d_helper = helper
@@ -1,3 +1,3 @@
1
1
  module Capcode
2
- CAPCOD_VERION="0.8.2"
2
+ CAPCOD_VERION="0.8.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Capcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Gr\xC3\xA9goire Lejeune"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-17 00:00:00 +02:00
12
+ date: 2009-09-05 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -39,65 +39,26 @@ executables: []
39
39
  extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
- - README
42
+ - README.rdoc
43
43
  - AUTHORS
44
44
  - COPYING
45
45
  - lib/capcode.rb
46
+ - lib/capcode/base/db.rb
47
+ - lib/capcode/render/erb.rb
48
+ - lib/capcode/render/haml.rb
49
+ - lib/capcode/render/json.rb
50
+ - lib/capcode/render/markaby.rb
51
+ - lib/capcode/render/sass.rb
52
+ - lib/capcode/render/static.rb
53
+ - lib/capcode/render/text.rb
54
+ - lib/capcode/render/xml.rb
46
55
  files:
47
56
  - COPYING
48
- - README
57
+ - README.rdoc
49
58
  - AUTHORS
50
59
  - setup.rb
51
- - doc/rdoc/classes/Capcode/Helpers.html
52
- - doc/rdoc/classes/Capcode/HTTPError.html
53
- - doc/rdoc/classes/Capcode/RenderError.html
54
- - doc/rdoc/classes/Capcode/Views.html
55
- - doc/rdoc/classes/Capcode.html
56
- - doc/rdoc/created.rid
57
- - doc/rdoc/files/AUTHORS.html
58
- - doc/rdoc/files/COPYING.html
59
- - doc/rdoc/files/lib/capcode_rb.html
60
- - doc/rdoc/files/README.html
61
- - doc/rdoc/index.html
62
- - doc/rdoc/permalink.gif
63
- - doc/rdoc/rdoc-style.css
64
- - doc/rdoc/rubyfr.png
65
- - doc/rdoc_iphone/classes/Capcode/Helpers.html
66
- - doc/rdoc_iphone/classes/Capcode/HTTPError.html
67
- - doc/rdoc_iphone/classes/Capcode/RenderError.html
68
- - doc/rdoc_iphone/classes/Capcode/Views.html
69
- - doc/rdoc_iphone/classes/Capcode.html
70
- - doc/rdoc_iphone/classes_index.html
71
- - doc/rdoc_iphone/created.rid
72
- - doc/rdoc_iphone/files/AUTHORS.html
73
- - doc/rdoc_iphone/files/COPYING.html
74
- - doc/rdoc_iphone/files/lib/capcode_rb.html
75
- - doc/rdoc_iphone/files/README.html
76
- - doc/rdoc_iphone/files_index.html
77
- - doc/rdoc_iphone/index.html
78
- - doc/rdoc_iphone/iui/backButton.png
79
- - doc/rdoc_iphone/iui/blueButton.png
80
- - doc/rdoc_iphone/iui/cancel.png
81
- - doc/rdoc_iphone/iui/grayButton.png
82
- - doc/rdoc_iphone/iui/iui-logo-touch-icon.png
83
- - doc/rdoc_iphone/iui/iui.css
84
- - doc/rdoc_iphone/iui/iui.js
85
- - doc/rdoc_iphone/iui/iuix.css
86
- - doc/rdoc_iphone/iui/iuix.js
87
- - doc/rdoc_iphone/iui/listArrow.png
88
- - doc/rdoc_iphone/iui/listArrowSel.png
89
- - doc/rdoc_iphone/iui/listGroup.png
90
- - doc/rdoc_iphone/iui/loading.gif
91
- - doc/rdoc_iphone/iui/pinstripes.png
92
- - doc/rdoc_iphone/iui/selection.png
93
- - doc/rdoc_iphone/iui/thumb.png
94
- - doc/rdoc_iphone/iui/toggle.png
95
- - doc/rdoc_iphone/iui/toggleOn.png
96
- - doc/rdoc_iphone/iui/toolbar.png
97
- - doc/rdoc_iphone/iui/toolButton.png
98
- - doc/rdoc_iphone/iui/whiteButton.png
99
- - doc/rdoc_iphone/rdoc-style.css
100
60
  - lib/capcode/base/couchdb.rb
61
+ - lib/capcode/base/db.rb
101
62
  - lib/capcode/base/dm.rb
102
63
  - lib/capcode/core_ext.rb
103
64
  - lib/capcode/render/erb.rb
@@ -122,7 +83,16 @@ files:
122
83
  - examples/haml/cf_layout.haml
123
84
  - examples/haml/layout.haml
124
85
  - examples/haml/m_hello.haml
86
+ - examples/haml/style.sass
125
87
  - examples/my_blog.db
88
+ - examples/render-erb.rb
89
+ - examples/render-haml_sass.rb
90
+ - examples/render-json.rb
91
+ - examples/render-markaby.rb
92
+ - examples/render-static.rb
93
+ - examples/render-text.rb
94
+ - examples/render-xml.rb
95
+ - examples/rest.rb
126
96
  - examples/rss.rb
127
97
  - examples/sample.rb
128
98
  - examples/session.rb
@@ -154,7 +124,7 @@ rdoc_options:
154
124
  - index.html
155
125
  - --line-numbers
156
126
  - --main
157
- - README
127
+ - README.rdoc
158
128
  - --inline-source
159
129
  - --exclude
160
130
  - ^(examples|extras|test|lib)\/
@@ -175,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
145
  requirements: []
176
146
 
177
147
  rubyforge_project: capcode
178
- rubygems_version: 1.3.4
148
+ rubygems_version: 1.3.5
179
149
  signing_key:
180
150
  specification_version: 3
181
151
  summary: Capcode is a web microframework
@@ -1,605 +0,0 @@
1
-
2
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3
- <html>
4
- <head>
5
- <title>
6
- Capcode, the Documentation &raquo; Module: Capcode
7
- </title>
8
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
10
- <script language="JavaScript" type="text/javascript">
11
- // <![CDATA[
12
-
13
- function toggleSource( id )
14
- {
15
- var elem
16
- var link
17
-
18
- if( document.getElementById )
19
- {
20
- elem = document.getElementById( id )
21
- link = document.getElementById( "l_" + id )
22
- }
23
- else if ( document.all )
24
- {
25
- elem = eval( "document.all." + id )
26
- link = eval( "document.all.l_" + id )
27
- }
28
- else
29
- return false;
30
-
31
- if( elem.style.display == "block" )
32
- {
33
- elem.style.display = "none"
34
- link.innerHTML = "show source"
35
- }
36
- else
37
- {
38
- elem.style.display = "block"
39
- link.innerHTML = "hide source"
40
- }
41
- }
42
-
43
- function openCode( url )
44
- {
45
- window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
46
- }
47
- // ]]>
48
- </script>
49
- </head>
50
- <body>
51
- <!--
52
- <div id="menu">
53
- <h3 class="title">Module: Capcode</h3>
54
- </div>
55
- -->
56
- <div id="fullpage">
57
- <div id="pager">
58
- <table>
59
- <tr><td><img src="../rubyfr.png" /></td>
60
- <td id="pagertd">
61
- <strong># Module: Capcode<br />
62
- [
63
- "<a href="../files/README.html" value="File: README">README</a>",
64
- "<a href="../files/AUTHORS.html" value="File: AUTHORS">AUTHORS</a>",
65
- "<a href="../files/COPYING.html" value="File: COPYING">COPYING</a>",
66
- "<a href="../files/lib/capcode_rb.html" value="File: capcode.rb">lib/capcode.rb</a>",
67
- <a href="http://greg.rubyfr.net">nil</a>].each do<br />
68
- <a href="../classes/Capcode.html" title="Module: Capcode">Capcode</a>.view_html<br />
69
- <a href="../classes/Capcode/Views.html" title="Module: Capcode::Views">Capcode::Views</a>.view_html<br />
70
- <a href="../classes/Capcode/Helpers.html" title="Module: Capcode::Helpers">Capcode::Helpers</a>.view_html<br />
71
- <a href="../classes/Capcode/HTTPError.html" title="Class: Capcode::HTTPError">Capcode::HTTPError</a>.view_html<br />
72
- <a href="../classes/Capcode/RenderError.html" title="Class: Capcode::RenderError">Capcode::RenderError</a>.view_html<br />
73
- <a href="../classes/Capcode/RouteError.html" title="Class: Capcode::RouteError">Capcode::RouteError</a>.view_html<br />
74
- <a href="../classes/Capcode/ParameterError.html" title="Class: Capcode::ParameterError">Capcode::ParameterError</a>.view_html<br />
75
- end</strong>
76
- </td></tr>
77
- </table>
78
- </ul>
79
- </div>
80
-
81
-
82
- <div id="Capcode" class="page_shade">
83
- <div class="page">
84
- <h3>Module Capcode</h3>
85
-
86
- (in files
87
- <a href="../files/lib/capcode_rb.html">lib/capcode.rb</a>
88
- )
89
-
90
-
91
-
92
-
93
- <h4>Includes</h4>
94
- <ul>
95
- <li>Rack</li>
96
- <li><a href="Capcode/Helpers.html">Capcode::Helpers</a></li>
97
- <li><a href="Capcode/Views.html">Capcode::Views</a></li>
98
- </ul>
99
-
100
- <h2 class="ruled">Methods</h2>
101
- <h4 class="ruled">Public Class method:
102
- <strong><a name="M000001">Route(*u)</a></strong> <a href="#M000001"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: Route" /></a></h4>
103
-
104
- <p>
105
- Add routes to a controller class
106
- </p>
107
- <pre>
108
- module Capcode
109
- class Hello &lt; Route '/hello/(.*)', '/hello/([^#]*)#(.*)'
110
- def get( arg1, arg2 )
111
- ...
112
- end
113
- end
114
- end
115
- </pre>
116
- <p>
117
- In the <tt>get</tt> method, you will receive the maximum of parameters
118
- declared by the routes. In this example, you will receive 2 parameters. So
119
- if you go to <tt>/hello/world#friend</tt> then <tt>arg1</tt> will be set to
120
- <tt>world</tt> and <tt>arg2</tt> will be set to <tt>friend</tt>. Now if you
121
- go to <tt>/hello/you</tt>, then <tt>arg1</tt> will be set to <tt>you</tt>
122
- and <tt>arg2</tt> will be set to <tt>nil</tt>
123
- </p>
124
- <p>
125
- If the regexp in the route does not match, all arguments will be
126
- <tt>nil</tt>
127
- </p>
128
-
129
- <div class="sourcecode">
130
- <p class="source-link">[ <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show source</a> ]</p>
131
- <div id="M000001_source" class="dyn-source">
132
- <pre>
133
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 210</span>
134
- 210: <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
- 211: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
136
- 212: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>){
137
- 213: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)'</span>
138
- 214: <span class="ruby-comment cmt"># # =&gt; [ {'/hello/world' =&gt; '([^\/]*)/id(\d*)', '/hello' =&gt; '(.*)'}, 2, &lt;Capcode::Klass&gt; ]</span>
139
- 215: <span class="ruby-identifier">h</span> = {}
140
- 216: <span class="ruby-identifier">max</span> = <span class="ruby-value">0</span>
141
- 217: <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
- 218: <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
- 219: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
144
- 220: <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 `#{_u}' already defined with regexp `#{h[_u]}' !&quot;</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
- 221: <span class="ruby-identifier">h</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-value str">''</span>
146
- 222: <span class="ruby-keyword kw">else</span>
147
- 223: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
148
- 224: <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>
149
- 225: <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 `#{h[_pre]}' !&quot;</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
- 226: <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
- 227: <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">&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>
152
- 228: <span class="ruby-keyword kw">end</span>
153
- 229: <span class="ruby-keyword kw">end</span>
154
- 230: [<span class="ruby-identifier">h</span>, <span class="ruby-identifier">max</span>, <span class="ruby-keyword kw">self</span>]
155
- 231: }
156
- 232:
157
- 233: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
158
- 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
159
- 235: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
160
- 236: <span class="ruby-keyword kw">end</span>
161
- 237:
162
- 238: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
163
- 239: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
164
- 240: <span class="ruby-ivar">@env</span>
165
- 241: <span class="ruby-keyword kw">end</span>
166
- 242:
167
- 243: <span class="ruby-comment cmt"># Hash session</span>
168
- 244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
169
- 245: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
170
- 246: <span class="ruby-keyword kw">end</span>
171
- 247:
172
- 248: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
173
- 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
174
- 250: <span class="ruby-ivar">@request</span>
175
- 251: <span class="ruby-keyword kw">end</span>
176
- 252:
177
- 253: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
178
- 254: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
179
- 255: <span class="ruby-ivar">@response</span>
180
- 256: <span class="ruby-keyword kw">end</span>
181
- 257:
182
- 258: <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
- 259: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
184
- 260: <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
- 261: <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
- 262:
187
- 263: <span class="ruby-comment cmt"># __k = self.class.to_s.split( /::/ )[-1].downcase.to_sym</span>
188
- 264: <span class="ruby-comment cmt"># @@__FILTERS.each do |f|</span>
189
- 265: <span class="ruby-comment cmt"># proc = f.delete(:action)</span>
190
- 266: <span class="ruby-comment cmt"># __run = true</span>
191
- 267: <span class="ruby-comment cmt"># if f[:only]</span>
192
- 268: <span class="ruby-comment cmt"># __run = f[:only].include?(__k)</span>
193
- 269: <span class="ruby-comment cmt"># end</span>
194
- 270: <span class="ruby-comment cmt"># if f[:except]</span>
195
- 271: <span class="ruby-comment cmt"># __run = !f[:except].include?(__k)</span>
196
- 272: <span class="ruby-comment cmt"># end</span>
197
- 273: <span class="ruby-comment cmt"># </span>
198
- 274: <span class="ruby-comment cmt"># # proc.call(self) if __run</span>
199
- 275: <span class="ruby-comment cmt"># puts &quot;call #{proc} for #{__k}&quot;</span>
200
- 276: <span class="ruby-comment cmt"># end</span>
201
- 277:
202
- 278: <span class="ruby-identifier">r</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>]
203
- 279: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;GET&quot;</span>
204
- 280: <span class="ruby-identifier">finalPath</span> = <span class="ruby-keyword kw">nil</span>
205
- 281: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-keyword kw">nil</span>
206
- 282: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-keyword kw">nil</span>
207
- 283:
208
- 284: <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> )
209
- 285: <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>
210
- 286: <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> )
211
- 287: <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>
212
- 288: <span class="ruby-identifier">diffArgs</span> = <span class="ruby-identifier">aPath</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xPath</span>
213
- 289: <span class="ruby-identifier">diffNArgs</span> = <span class="ruby-identifier">diffArgs</span>.<span class="ruby-identifier">size</span>
214
- 290: <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>
215
- 291: <span class="ruby-identifier">finalPath</span> = <span class="ruby-identifier">p</span>
216
- 292: <span class="ruby-identifier">finalNArgs</span> = <span class="ruby-identifier">diffNArgs</span>
217
- 293: <span class="ruby-identifier">finalArgs</span> = <span class="ruby-identifier">diffArgs</span>
218
- 294: <span class="ruby-keyword kw">end</span>
219
- 295: <span class="ruby-keyword kw">end</span>
220
- 296:
221
- 297: <span class="ruby-keyword kw">end</span>
222
- 298:
223
- 299: <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>]
224
- 300: <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>] )
225
- 301: <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> ) )
226
- 302: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
227
- 303: <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>
228
- 304: <span class="ruby-keyword kw">else</span>
229
- 305: <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> }
230
- 306: <span class="ruby-keyword kw">end</span>
231
- 307:
232
- 308: <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>
233
- 309: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
234
- 310: <span class="ruby-keyword kw">end</span>
235
- 311:
236
- 312: <span class="ruby-identifier">get</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
237
- 313: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;POST&quot;</span>
238
- 314: <span class="ruby-identifier">post</span>
239
- 315: <span class="ruby-keyword kw">end</span>
240
- 316: <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>)
241
- 317: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">0</span>]
242
- 318: <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>
243
- 319: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
244
- 320: <span class="ruby-keyword kw">end</span>
245
- 321: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">r</span>[<span class="ruby-value">2</span>]
246
- 322: <span class="ruby-keyword kw">else</span>
247
- 323: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
248
- 324: <span class="ruby-keyword kw">end</span>
249
- 325:
250
- 326: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
251
- 327: <span class="ruby-keyword kw">end</span>
252
- 328:
253
- 329: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
254
- 330: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
255
- 331: }
256
- 332: <span class="ruby-keyword kw">end</span>
257
- </pre>
258
- </div>
259
- </div>
260
- <h4 class="ruled">Public Class method:
261
- <strong><a name="M000003">env()</a></strong> <a href="#M000003"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: env" /></a></h4>
262
-
263
- <p>
264
- Hash containing all the environment variables
265
- </p>
266
-
267
- <div class="sourcecode">
268
- <p class="source-link">[ <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show source</a> ]</p>
269
- <div id="M000003_source" class="dyn-source">
270
- <pre>
271
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 239</span>
272
- 239: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
273
- 240: <span class="ruby-ivar">@env</span>
274
- 241: <span class="ruby-keyword kw">end</span>
275
- </pre>
276
- </div>
277
- </div>
278
- <h4 class="ruled">Public Class method:
279
- <strong><a name="M000007">map( r ) {|| ...}</a></strong> <a href="#M000007"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: map" /></a></h4>
280
-
281
- <p>
282
- This method help you to <a href="Capcode.html#M000007">map</a> and URL to a
283
- Rack or What you want Helper
284
- </p>
285
- <pre>
286
- Capcode.map( &quot;/file&quot; ) do
287
- Rack::File.new( &quot;.&quot; )
288
- end
289
- </pre>
290
-
291
- <div class="sourcecode">
292
- <p class="source-link">[ <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show source</a> ]</p>
293
- <div id="M000007_source" class="dyn-source">
294
- <pre>
295
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 339</span>
296
- 339: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">map</span>( <span class="ruby-identifier">r</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
297
- 340: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-keyword kw">yield</span>
298
- 341: <span class="ruby-keyword kw">end</span>
299
- </pre>
300
- </div>
301
- </div>
302
- <h4 class="ruled">Public Class method:
303
- <strong><a name="M000002">params()</a></strong> <a href="#M000002"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: params" /></a></h4>
304
-
305
- <p>
306
- Hash containing all the <a href="Capcode.html#M000005">request</a>
307
- parameters (GET or POST)
308
- </p>
309
-
310
- <div class="sourcecode">
311
- <p class="source-link">[ <a href="javascript:toggleSource('M000002_source')" id="l_M000002_source">show source</a> ]</p>
312
- <div id="M000002_source" class="dyn-source">
313
- <pre>
314
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 234</span>
315
- 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
316
- 235: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
317
- 236: <span class="ruby-keyword kw">end</span>
318
- </pre>
319
- </div>
320
- </div>
321
- <h4 class="ruled">Public Class method:
322
- <strong><a name="M000005">request()</a></strong> <a href="#M000005"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: request" /></a></h4>
323
-
324
- <p>
325
- Return the Rack::Request object
326
- </p>
327
-
328
- <div class="sourcecode">
329
- <p class="source-link">[ <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show source</a> ]</p>
330
- <div id="M000005_source" class="dyn-source">
331
- <pre>
332
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 249</span>
333
- 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
334
- 250: <span class="ruby-ivar">@request</span>
335
- 251: <span class="ruby-keyword kw">end</span>
336
- </pre>
337
- </div>
338
- </div>
339
- <h4 class="ruled">Public Class method:
340
- <strong><a name="M000006">response()</a></strong> <a href="#M000006"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: response" /></a></h4>
341
-
342
- <p>
343
- Return the Rack::Response object
344
- </p>
345
-
346
- <div class="sourcecode">
347
- <p class="source-link">[ <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show source</a> ]</p>
348
- <div id="M000006_source" class="dyn-source">
349
- <pre>
350
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 254</span>
351
- 254: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
352
- 255: <span class="ruby-ivar">@response</span>
353
- 256: <span class="ruby-keyword kw">end</span>
354
- </pre>
355
- </div>
356
- </div>
357
- <h4 class="ruled">Public Class method:
358
- <strong><a name="M000008">run( args = {} ) {|self| ...}</a></strong> <a href="#M000008"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: run" /></a></h4>
359
-
360
- <p>
361
- Start your application.
362
- </p>
363
- <p>
364
- Options :
365
- </p>
366
- <ul>
367
- <li><tt>:port</tt> = Listen port
368
-
369
- </li>
370
- <li><tt>:host</tt> = Listen host
371
-
372
- </li>
373
- <li><tt>:server</tt> = Server type (webrick or mongrel)
374
-
375
- </li>
376
- <li><tt>:log</tt> = Output logfile (default: STDOUT)
377
-
378
- </li>
379
- <li><tt>:<a href="Capcode.html#M000004">session</a></tt> = Session parameters.
380
- See Rack::Session for more informations
381
-
382
- </li>
383
- <li><tt>:pid</tt> = PID file (default: $0.pid)
384
-
385
- </li>
386
- <li><tt>:daemonize</tt> = Daemonize application (default: false)
387
-
388
- </li>
389
- <li><tt>:db_config</tt> = database configuration file (default: database.yml)
390
-
391
- </li>
392
- <li><tt>:static</tt> = Static directory (default: none &#8212; relative to the
393
- working directory)
394
-
395
- </li>
396
- <li><tt>:root</tt> = Root directory (default: directory of the main.rb) &#8212;
397
- This is also the working directory !
398
-
399
- </li>
400
- </ul>
401
-
402
- <div class="sourcecode">
403
- <p class="source-link">[ <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show source</a> ]</p>
404
- <div id="M000008_source" class="dyn-source">
405
- <pre>
406
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 356</span>
407
- 356: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
408
- 357: <span class="ruby-identifier">__VERBOSE</span> = <span class="ruby-keyword kw">false</span>
409
- 358:
410
- 359: <span class="ruby-identifier">conf</span> = {
411
- 360: <span class="ruby-identifier">:port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:port</span>]<span class="ruby-operator">||</span><span class="ruby-value">3000</span>,
412
- 361: <span class="ruby-identifier">:host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:host</span>]<span class="ruby-operator">||</span><span class="ruby-value str">&quot;localhost&quot;</span>,
413
- 362: <span class="ruby-identifier">:server</span> =<span class="ruby-operator">&gt;</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>,
414
- 363: <span class="ruby-identifier">:log</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:log</span>]<span class="ruby-operator">||</span><span class="ruby-identifier">$stdout</span>,
415
- 364: <span class="ruby-identifier">:session</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:session</span>]<span class="ruby-operator">||</span>{},
416
- 365: <span class="ruby-identifier">:pid</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:pid</span>]<span class="ruby-operator">||</span><span class="ruby-node">&quot;#{$0}.pid&quot;</span>,
417
- 366: <span class="ruby-identifier">:daemonize</span> =<span class="ruby-operator">&gt;</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>,
418
- 367: <span class="ruby-identifier">:db_config</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">args</span>[<span class="ruby-identifier">:db_config</span>]<span class="ruby-operator">||</span><span class="ruby-value str">&quot;database.yml&quot;</span>),
419
- 368: <span class="ruby-identifier">:static</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:static</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">nil</span>,
420
- 369: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:root</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>)),
421
- 370:
422
- 371: <span class="ruby-identifier">:console</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>
423
- 372: }
424
- 373:
425
- 374: <span class="ruby-comment cmt"># Parse options</span>
426
- 375: <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>
427
- 376: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
428
- 377: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
429
- 378: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
430
- 379:
431
- 380: <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> ) {
432
- 381: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>] = <span class="ruby-keyword kw">true</span>
433
- 382: }
434
- 383: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-h&quot;</span>, <span class="ruby-value str">&quot;--host HOSTNAME&quot;</span>, <span class="ruby-node">&quot;Host for web server to bind to (default: #{conf[:host]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
435
- 384: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>] = <span class="ruby-identifier">h</span>
436
- 385: }
437
- 386: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-p&quot;</span>, <span class="ruby-value str">&quot;--port NUM&quot;</span>, <span class="ruby-node">&quot;Port for web server (default: #{conf[:port]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
438
- 387: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>] = <span class="ruby-identifier">p</span>
439
- 388: }
440
- 389: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-d&quot;</span>, <span class="ruby-value str">&quot;--daemonize [true|false]&quot;</span>, <span class="ruby-node">&quot;Daemonize (default: #{conf[:daemonize]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
441
- 390: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>] = <span class="ruby-identifier">d</span>
442
- 391: }
443
- 392: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-r&quot;</span>, <span class="ruby-value str">&quot;--root PATH&quot;</span>, <span class="ruby-node">&quot;Working directory (default: #{conf[:root]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
444
- 393: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] = <span class="ruby-identifier">w</span>
445
- 394: }
446
- 395: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-s&quot;</span>, <span class="ruby-value str">&quot;--static PATH&quot;</span>, <span class="ruby-node">&quot;Static directory -- relative to the root directory (default: #{conf[:static]})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
447
- 396: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] = <span class="ruby-identifier">r</span>
448
- 397: }
449
- 398:
450
- 399: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
451
- 400: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
452
- 401:
453
- 402: <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>
454
- 403: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
455
- 404: <span class="ruby-identifier">exit</span>
456
- 405: <span class="ruby-keyword kw">end</span>
457
- 406: <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>
458
- 407: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
459
- 408: <span class="ruby-identifier">exit</span>
460
- 409: <span class="ruby-keyword kw">end</span>
461
- 410: <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>
462
- 411: <span class="ruby-identifier">__VERBOSE</span> = <span class="ruby-keyword kw">true</span>
463
- 412: <span class="ruby-keyword kw">end</span>
464
- 413: <span class="ruby-keyword kw">end</span>
465
- 414:
466
- 415: <span class="ruby-keyword kw">begin</span>
467
- 416: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
468
- 417: <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>
469
- 418: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
470
- 419: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
471
- 420: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
472
- 421: <span class="ruby-keyword kw">end</span>
473
- 422:
474
- 423: <span class="ruby-comment cmt"># Run in the Working directory</span>
475
- 424: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(conf[:root])})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">__VERBOSE</span>
476
- 425: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>] ) <span class="ruby-keyword kw">do</span>
477
- 426:
478
- 427: <span class="ruby-comment cmt"># Check that mongrel exists </span>
479
- 428: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
480
- 429: <span class="ruby-keyword kw">begin</span>
481
- 430: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
482
- 431: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;mongrel&quot;</span>
483
- 432: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
484
- 433: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
485
- 434: <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>] = <span class="ruby-value str">&quot;webrick&quot;</span>
486
- 435: <span class="ruby-keyword kw">end</span>
487
- 436: <span class="ruby-keyword kw">end</span>
488
- 437:
489
- 438: <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>
490
- 439: <span class="ruby-keyword kw">begin</span>
491
- 440: <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>
492
- 441: <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">&quot;Capcode::#{k}.__urls__&quot;</span>
493
- 442: <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>
494
- 443: <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 `#{_u}' already define !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@@__ROUTES</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_u</span>)
495
- 444: <span class="ruby-ivar">@@__ROUTES</span>[<span class="ruby-identifier">_u</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">new</span>
496
- 445: <span class="ruby-keyword kw">end</span>
497
- 446: <span class="ruby-keyword kw">end</span>
498
- 447: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
499
- 448: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
500
- 449: <span class="ruby-keyword kw">end</span>
501
- 450: <span class="ruby-keyword kw">end</span>
502
- 451:
503
- 452: <span class="ruby-comment cmt"># Set Static directory</span>
504
- 453: <span class="ruby-ivar">@@__STATIC_DIR</span> = (<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;/&quot;</span>)<span class="ruby-operator">?</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>]<span class="ruby-operator">:</span><span class="ruby-value str">&quot;/&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
505
- 454:
506
- 455: <span class="ruby-comment cmt"># Initialize Rack App</span>
507
- 456: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Map routes.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">__VERBOSE</span>
508
- 457: <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>)
509
- 458: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{conf[:static]})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">__VERBOSE</span>
510
- 459: <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>(
511
- 460: <span class="ruby-identifier">app</span>,
512
- 461: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-ivar">@@__STATIC_DIR</span>],
513
- 462: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:root</span>])
514
- 463: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:static</span>].<span class="ruby-identifier">nil?</span>
515
- 464: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Initialize session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">__VERBOSE</span>
516
- 465: <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>] )
517
- 466: <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>)
518
- 467: <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>)
519
- 468: <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>)
520
- 469: <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>)
521
- 470: <span class="ruby-comment cmt"># app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
522
- 471: <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>]) )
523
- 472:
524
- 473: <span class="ruby-comment cmt"># From rackup !!!</span>
525
- 474: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:daemonize</span>]
526
- 475: <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>
527
- 476: <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>
528
- 477: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
529
- 478: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
530
- 479: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
531
- 480: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
532
- 481: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
533
- 482: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
534
- 483: <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>
535
- 484: <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>
536
- 485: <span class="ruby-keyword kw">else</span>
537
- 486: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
538
- 487: <span class="ruby-keyword kw">end</span>
539
- 488: <span class="ruby-keyword kw">else</span>
540
- 489: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
541
- 490: <span class="ruby-keyword kw">end</span>
542
- 491:
543
- 492: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:pid</span>], <span class="ruby-value str">'w'</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">&quot;#{Process.pid}&quot;</span>) }
544
- 493: <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>]) }
545
- 494: <span class="ruby-keyword kw">end</span>
546
- 495:
547
- 496: <span class="ruby-comment cmt"># Start database</span>
548
- 497: <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>
549
- 498: <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>] )
550
- 499: <span class="ruby-keyword kw">end</span>
551
- 500:
552
- 501: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
553
- 502: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
554
- 503: <span class="ruby-keyword kw">end</span>
555
- 504:
556
- 505: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:console</span>]
557
- 506: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
558
- 507: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
559
- 508: <span class="ruby-identifier">exit</span>
560
- 509: <span class="ruby-keyword kw">end</span>
561
- 510:
562
- 511: <span class="ruby-comment cmt"># Start server</span>
563
- 512: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:server</span>]
564
- 513: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
565
- 514: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{conf[:host]}:#{conf[:port]}&quot;</span>
566
- 515: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">Mongrel</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
567
- 516: <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> }
568
- 517: }
569
- 518: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
570
- 519: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{conf[:host]}:#{conf[:port]}&quot;</span>
571
- 520: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">WEBrick</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:port</span>], <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">conf</span>[<span class="ruby-identifier">:host</span>]} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
572
- 521: <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> }
573
- 522: }
574
- 523: <span class="ruby-keyword kw">end</span>
575
- 524: <span class="ruby-keyword kw">end</span>
576
- 525: <span class="ruby-keyword kw">end</span>
577
- </pre>
578
- </div>
579
- </div>
580
- <h4 class="ruled">Public Class method:
581
- <strong><a name="M000004">session()</a></strong> <a href="#M000004"><img src="../permalink.gif" border="0" title="Permalink to Public Class method: session" /></a></h4>
582
-
583
- <p>
584
- Hash <a href="Capcode.html#M000004">session</a>
585
- </p>
586
-
587
- <div class="sourcecode">
588
- <p class="source-link">[ <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show source</a> ]</p>
589
- <div id="M000004_source" class="dyn-source">
590
- <pre>
591
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 244</span>
592
- 244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
593
- 245: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
594
- 246: <span class="ruby-keyword kw">end</span>
595
- </pre>
596
- </div>
597
- </div>
598
-
599
- </div>
600
- </div>
601
-
602
-
603
- </div>
604
- </body>
605
- </html>