nitro 0.31.0 → 0.40.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.
Files changed (174) hide show
  1. data/bin/nitro +135 -37
  2. data/doc/CHANGELOG.1 +108 -108
  3. data/doc/CHANGELOG.2 +89 -89
  4. data/doc/CHANGELOG.3 +105 -105
  5. data/{CHANGELOG → doc/CHANGELOG.4} +509 -509
  6. data/doc/{AUTHORS → CONTRIBUTORS} +49 -37
  7. data/doc/LIBRARIES +13 -0
  8. data/doc/LICENSE +2 -3
  9. data/doc/MIGRATION +45 -0
  10. data/doc/RELEASES +131 -11
  11. data/doc/TODO +67 -0
  12. data/lib/glue/magick.rb +0 -3
  13. data/lib/glue/sweeper.rb +30 -15
  14. data/lib/glue/thumbnails.rb +0 -2
  15. data/lib/glue/webfile.rb +23 -11
  16. data/lib/nitro.rb +37 -44
  17. data/lib/nitro/adapter/cgi.rb +0 -3
  18. data/lib/nitro/adapter/console.rb +0 -2
  19. data/lib/nitro/adapter/fastcgi.rb +6 -3
  20. data/lib/nitro/adapter/mongrel.rb +97 -58
  21. data/lib/nitro/adapter/script.rb +4 -6
  22. data/lib/nitro/adapter/webrick.rb +33 -87
  23. data/lib/nitro/adapter/webrick/vcr.rb +85 -0
  24. data/lib/nitro/caching.rb +0 -2
  25. data/lib/nitro/caching/actions.rb +0 -2
  26. data/lib/nitro/caching/fragments.rb +0 -2
  27. data/lib/nitro/caching/output.rb +45 -16
  28. data/lib/nitro/caching/proxy.rb +49 -0
  29. data/lib/nitro/cgi.rb +3 -6
  30. data/lib/nitro/cgi/cookie.rb +0 -3
  31. data/lib/nitro/cgi/request.rb +67 -24
  32. data/lib/nitro/cgi/response.rb +0 -2
  33. data/lib/nitro/cgi/{sendfile.rb → send_file.rb} +7 -6
  34. data/lib/nitro/compiler.rb +62 -55
  35. data/lib/nitro/compiler/cleanup.rb +0 -3
  36. data/lib/nitro/compiler/elements.rb +31 -28
  37. data/lib/nitro/compiler/errors.rb +2 -5
  38. data/lib/nitro/compiler/include.rb +10 -8
  39. data/lib/nitro/compiler/layout.rb +0 -2
  40. data/lib/nitro/compiler/localization.rb +0 -2
  41. data/lib/nitro/compiler/markup.rb +14 -6
  42. data/lib/nitro/compiler/morphing.rb +1 -5
  43. data/lib/nitro/compiler/script.rb +2 -4
  44. data/lib/nitro/compiler/squeeze.rb +0 -2
  45. data/lib/nitro/compiler/xslt.rb +0 -2
  46. data/lib/nitro/context.rb +10 -5
  47. data/lib/nitro/control.rb +18 -0
  48. data/lib/nitro/control/attribute.rb +88 -0
  49. data/lib/nitro/control/attribute/checkbox.rb +19 -0
  50. data/lib/nitro/control/attribute/datetime.rb +21 -0
  51. data/lib/nitro/control/attribute/file.rb +20 -0
  52. data/lib/nitro/control/attribute/fixnum.rb +26 -0
  53. data/lib/nitro/control/attribute/float.rb +26 -0
  54. data/lib/nitro/control/attribute/options.rb +38 -0
  55. data/lib/nitro/control/attribute/password.rb +16 -0
  56. data/lib/nitro/control/attribute/text.rb +16 -0
  57. data/lib/nitro/control/attribute/textarea.rb +16 -0
  58. data/lib/nitro/control/none.rb +16 -0
  59. data/lib/nitro/control/relation.rb +53 -0
  60. data/lib/nitro/control/relation/belongs_to.rb +0 -0
  61. data/lib/nitro/control/relation/has_many.rb +97 -0
  62. data/lib/nitro/control/relation/joins_many.rb +0 -0
  63. data/lib/nitro/control/relation/many_to_many.rb +0 -0
  64. data/lib/nitro/control/relation/refers_to.rb +29 -0
  65. data/lib/nitro/controller.rb +7 -296
  66. data/lib/nitro/dispatcher.rb +72 -34
  67. data/lib/nitro/element.rb +36 -10
  68. data/lib/nitro/element/javascript.rb +0 -2
  69. data/lib/nitro/flash.rb +23 -10
  70. data/lib/nitro/global.rb +36 -11
  71. data/lib/nitro/helper.rb +22 -8
  72. data/lib/nitro/helper/benchmark.rb +0 -2
  73. data/lib/nitro/helper/buffer.rb +0 -3
  74. data/lib/nitro/helper/css.rb +12 -0
  75. data/lib/nitro/helper/debug.rb +1 -3
  76. data/lib/nitro/helper/default.rb +1 -0
  77. data/lib/nitro/helper/feed.rb +400 -386
  78. data/lib/nitro/helper/form.rb +246 -116
  79. data/lib/nitro/helper/javascript.rb +28 -2
  80. data/lib/nitro/helper/javascript/morphing.rb +0 -2
  81. data/lib/nitro/helper/javascript/prototype.rb +0 -2
  82. data/lib/nitro/helper/javascript/scriptaculous.rb +0 -1
  83. data/lib/nitro/helper/layout.rb +0 -2
  84. data/lib/nitro/helper/navigation.rb +87 -0
  85. data/lib/nitro/helper/pager.rb +11 -22
  86. data/lib/nitro/helper/table.rb +9 -32
  87. data/lib/nitro/helper/url.rb +104 -0
  88. data/lib/nitro/helper/xhtml.rb +20 -4
  89. data/lib/nitro/helper/xml.rb +0 -2
  90. data/lib/nitro/markup.rb +131 -0
  91. data/lib/nitro/part.rb +52 -7
  92. data/lib/nitro/publishable.rb +328 -0
  93. data/lib/nitro/render.rb +30 -61
  94. data/lib/nitro/router.rb +12 -4
  95. data/lib/nitro/sanitize.rb +48 -0
  96. data/lib/nitro/scaffold.rb +9 -11
  97. data/lib/nitro/scaffold/controller.rb +25 -0
  98. data/lib/nitro/scaffold/model.rb +150 -0
  99. data/lib/nitro/scaffolding.rb +1 -3
  100. data/lib/nitro/server.rb +57 -32
  101. data/lib/nitro/server/drb.rb +16 -2
  102. data/lib/nitro/server/runner.rb +80 -102
  103. data/lib/nitro/service.rb +0 -1
  104. data/lib/nitro/service/xmlrpc.rb +0 -2
  105. data/lib/nitro/session.rb +26 -18
  106. data/lib/nitro/session/drb.rb +2 -16
  107. data/lib/nitro/session/memory.rb +0 -2
  108. data/lib/nitro/template.rb +219 -0
  109. data/lib/nitro/test/assertions.rb +1 -3
  110. data/lib/nitro/test/context.rb +0 -1
  111. data/lib/nitro/test/testcase.rb +0 -1
  112. data/lib/nitro/version.rb +6 -0
  113. data/lib/part/admin.rb +16 -0
  114. data/lib/part/admin/controller.rb +19 -0
  115. data/lib/part/admin/helper.rb +30 -0
  116. data/lib/part/admin/og/controller.rb +114 -0
  117. data/lib/part/admin/og/customize.rb +4 -0
  118. data/lib/part/admin/og/template/index.xhtml +27 -0
  119. data/lib/part/admin/og/template/list.xhtml +38 -0
  120. data/lib/part/admin/og/template/search.xhtml +20 -0
  121. data/lib/part/admin/og/template/update.xhtml +25 -0
  122. data/lib/part/admin/skin.rb +207 -0
  123. data/lib/part/admin/template/denied.xhtml +13 -0
  124. data/lib/part/admin/template/index.xhtml +12 -0
  125. data/lib/part/admin/todo.txt +2 -0
  126. data/proto/public/error.xhtml +4 -2
  127. data/proto/run.rb +0 -2
  128. data/test/glue/tc_webfile.rb +1 -0
  129. data/test/nitro/cgi/tc_request.rb +23 -0
  130. data/test/nitro/helper/tc_feed.rb +0 -3
  131. data/test/nitro/helper/tc_navbar.rb +74 -0
  132. data/test/nitro/helper/tc_table.rb +2 -0
  133. data/test/nitro/tc_cgi.rb +72 -19
  134. data/test/nitro/tc_controller.rb +35 -26
  135. data/test/nitro/tc_controller_aspect.rb +1 -0
  136. data/test/nitro/tc_controller_params.rb +864 -0
  137. data/test/nitro/tc_dispatcher.rb +2 -2
  138. data/test/nitro/tc_element.rb +16 -16
  139. data/test/nitro/tc_flash.rb +3 -3
  140. data/test/nitro/tc_markup.rb +31 -0
  141. data/test/nitro/tc_render.rb +12 -14
  142. data/test/nitro/tc_session.rb +9 -7
  143. data/test/nitro/tc_template.rb +34 -0
  144. metadata +217 -198
  145. data/INSTALL +0 -121
  146. data/ProjectInfo +0 -74
  147. data/README +0 -555
  148. data/doc/apache.txt +0 -9
  149. data/doc/config.txt +0 -28
  150. data/doc/faq.txt +0 -7
  151. data/doc/lhttpd.txt +0 -7
  152. data/lib/nitro/adapter/scgi.rb +0 -239
  153. data/lib/nitro/helper/form/builder.rb +0 -144
  154. data/lib/nitro/helper/form/controls.rb +0 -389
  155. data/lib/nitro/helper/rss.rb +0 -72
  156. data/proto/conf/apache.conf +0 -51
  157. data/proto/public/scaffold/advanced_search.xhtml +0 -30
  158. data/proto/public/scaffold/edit.xhtml +0 -11
  159. data/proto/public/scaffold/form.xhtml +0 -1
  160. data/proto/public/scaffold/index.xhtml +0 -20
  161. data/proto/public/scaffold/list.xhtml +0 -32
  162. data/proto/public/scaffold/new.xhtml +0 -11
  163. data/proto/public/scaffold/search.xhtml +0 -29
  164. data/proto/public/scaffold/view.xhtml +0 -8
  165. data/proto/script/scgi_ctl +0 -221
  166. data/proto/script/scgi_service +0 -128
  167. data/setup.rb +0 -1585
  168. data/src/part/admin.rb +0 -16
  169. data/src/part/admin/controller.rb +0 -81
  170. data/src/part/admin/skin.rb +0 -21
  171. data/src/part/admin/system.css +0 -135
  172. data/src/part/admin/template/denied.xhtml +0 -1
  173. data/src/part/admin/template/index.xhtml +0 -43
  174. data/test/nitro/helper/tc_rss.rb +0 -24
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'drb'
4
4
  require 'optparse'
5
+ require 'fileutils'
5
6
 
6
7
  require 'facet/synchash'
7
8
 
@@ -80,12 +81,26 @@ class DrbServer
80
81
  end
81
82
 
82
83
  # Start the DRb server.
83
-
84
+ #--
85
+ # TODO: refactor with runner code.
86
+ #++
87
+
84
88
  def start
85
89
  parse_options
90
+
86
91
  if @daemon
87
92
  require 'daemons/daemonize'
93
+ pwd = Dir.pwd
94
+
88
95
  Daemonize.daemonize()
96
+
97
+ # Restore the original pwd (daemonize sets the
98
+ # pwd to '/').
99
+
100
+ Dir.chdir(pwd)
101
+
102
+ # Save a process sentinel file.
103
+ FileUtils.touch ".d#{Process.pid}.pid"
89
104
  end
90
105
  setup_drb()
91
106
  end
@@ -103,4 +118,3 @@ DrbServer.start if __FILE__ == $0
103
118
 
104
119
  end
105
120
 
106
- # * George Moschovitis <gm@navel.gr>
@@ -15,41 +15,14 @@ module Nitro
15
15
  # The runner provides default parsing of command line
16
16
  # and environment parameters.
17
17
  #
18
- # The default execution modes are:
19
- #
20
- # :debug, :stage, :live
21
- #
22
18
  # You can implement your own, custom version of the Runner
23
19
  # to run your custom web applications.
24
20
  #--
25
- # FIXME: Rename/Reimplement this class.
21
+ # WARNING: this class will be deprecated!
22
+ # FIXME: Trim this class, most functionality goes to bin/nitro.
26
23
  #++
27
24
 
28
25
  class Runner
29
-
30
- # The adapter used.
31
-
32
- setting :adapter, :default => :webrick, :doc => 'The web adapter'
33
-
34
- # Execution mode = (:debug, :stage, :live)
35
- #
36
- # [:debug]
37
- # useful when debugging, extra debug information
38
- # is emmited, actions, templates and shaders are
39
- # reloaded, etc. The execution speed of the application
40
- # is impaired.
41
- #
42
- # [:stage]
43
- # test the application with live parameters
44
- # (typically on a staging server).
45
- #
46
- # [:live]
47
- # use the parameters for the live (production)
48
- # server. Optimized for speed.
49
- #
50
- # The default mode is :debug
51
-
52
- setting :mode, :default => :debug, :doc => 'The execution mode'
53
26
 
54
27
  # :start, :stop, :restart
55
28
 
@@ -76,18 +49,9 @@ class Runner
76
49
 
77
50
  def setup_options
78
51
  @action ||= :start
79
- @server ||= :webrick
80
52
  @daemon = false
81
53
  @spider = false
82
54
 
83
- # Setup from environment
84
-
85
- if mode = ENV['NITRO_MODE']
86
- self.class.mode = mode.to_sym
87
- else
88
- self.class.mode ||= :debug
89
- end
90
-
91
55
  # Setup from command line arguments.
92
56
 
93
57
  parser = OptionParser.new do |opts|
@@ -113,15 +77,15 @@ class Runner
113
77
  end
114
78
 
115
79
  opts.on('-D', '--debug', 'Run application in debug mode.') do
116
- self.class.mode = :debug
80
+ Configuration.mode = :debug
117
81
  end
118
82
 
119
83
  opts.on('-T', '--stage', 'Run application in stage mode.') do
120
- self.class.mode = :stage
84
+ Configuration.mode = :stage
121
85
  end
122
86
 
123
87
  opts.on('-L', '--live', 'Run application in live mode.') do
124
- self.class.mode = :live
88
+ Configuration.mode = :live
125
89
  end
126
90
 
127
91
  opts.on('--address IP', 'Force the server to run on this address.') do |a|
@@ -132,83 +96,96 @@ class Runner
132
96
  @server_port = p.to_i
133
97
  end
134
98
 
99
+ opts.on('--port_offset PORT', 'The port offset in the cluster.') do |o|
100
+ @server_port_offset = o.to_i
101
+ end
102
+
135
103
  opts.on('-w', '--webrick', 'Use a webrick server [default].') do
136
- @server = :webrick
104
+ Nitro.adapter = :webrick
137
105
  end
138
106
 
139
107
  opts.on('-m', '--mongrel', 'Use the Mongrel Ruby server.') do
140
- @server = :mongrel
108
+ Nitro.adapter = :mongrel
141
109
  # FIXME: handle logging.
142
110
  end
143
111
 
144
112
  opts.on('-l', '--lhttpd', 'Use a lighttpd server (FastCGI).') do
145
- @server = :lhttpd
113
+ Nitro.adapter = :lhttpd
146
114
  Logger.set(Logger.new('log/app.log'))
147
115
  end
148
116
 
149
117
  opts.on('-l', '--lhttpd-scgi', 'Use the SCGI adapter (Lighttpd).') do
150
- @server = :lhttpd_scgi
118
+ Nitro.adapter = :lhttpd_scgi
151
119
  Logger.set(Logger.new('log/app.log'))
152
120
  end
153
121
 
154
122
  opts.on('-a', '--apache', 'Use an apache server.') do
155
- @server = :apache
123
+ Nitro.adapter = :apache
156
124
  Logger.set(Logger.new('log/app.log'))
157
125
  end
158
126
 
159
127
  opts.on('--apache-cgi', 'Use the CGI adapter (Apache)') do
160
- @server = :cgi
128
+ Nitro.adapter = :cgi
161
129
  Logger.set(Logger.new('log/app.log'))
162
130
  end
163
131
 
164
132
  opts.on('--scgi', 'Use the generic SCGI adapter') do
165
- @server = :scgi
133
+ Nitro.adapter = :scgi
166
134
  end
167
135
 
168
- opts.on('-C', '--console', 'Start a console attached to an instance of the application.') do
169
- if RUBY_PLATFORM =~ /mswin32/
170
- irb_name = 'irb.bat'
171
- else
172
- irb_name = 'irb'
173
- end
174
- ENV['NITRO_INVOKE'] = 'irb'
175
- $NITRO_NO_INVOKE = true
176
- @server = :console
177
- conf_file = File.basename(caller.last.split(':').first)
178
- exec "#{irb_name} -r #{conf_file} -r irb/completion --noinspect"
179
- exit
180
- end
181
-
182
136
  opts.on('--crawl', 'Crawl the application.') do
183
- @server = :webrick
137
+ Nitro.adapter = :webrick
184
138
  @spider = :crawl
185
139
  end
186
140
 
187
141
  opts.on('--render', 'Crawl the application and render all pages as static html files.') do
188
- @server = :webrick
142
+ Nitro.adapter = :webrick
189
143
  @spider = :render
190
144
  end
191
145
 
192
- opts.on('--record FILENAME', 'Record the application server session to the given file.') do |filename|
193
- @server = :webrick
194
- $record_session_filename = filename || 'vcrsession.yaml'
146
+ opts.on_tail('-h', '--help', 'Show this message.') do
147
+ puts opts
148
+ exit
195
149
  end
150
+
151
+ # Hack fix for bin/nitro.
196
152
 
197
- opts.on('--playback FILENAME', 'Playback a previously recorded session from the given file.') do |filename|
198
- @server = :webrick
199
- $playback_session_filename = filename || 'vcrsession.yaml'
153
+ opts.on_tail('-v', '--verbose', 'Verbose mode') do
154
+ # nop, hack fix.
200
155
  end
201
156
 
202
- opts.on_tail('-v', '--version', 'Show version.') do
203
- puts "Nitro #{Nitro::Version}"
204
- exit
157
+ opts.on('--destroy') do
158
+ # nop, hack fix.
159
+ end
160
+
161
+ opts.on('-C', '--console', 'Start a console attached to an instance of the application.') do
162
+ # nop, hack fix.
205
163
  end
206
164
 
207
- opts.on_tail('-h', '--help', 'Show this message.') do
208
- puts opts
209
- exit
165
+ opts.on('--app', 'The application name') do |adapter|
166
+ # nop, hack fix.
210
167
  end
211
-
168
+
169
+ opts.on('--mode', 'Set the execution mode') do |adapter|
170
+ # nop, hack fix.
171
+ end
172
+
173
+ opts.on('--adapter', 'Set the adapter to use') do |adapter|
174
+ # nop, hack fix.
175
+ end
176
+
177
+ opts.on('--record', 'Record the application server session to the given file.') do |filename|
178
+ # nop, hack fix.
179
+ end
180
+
181
+ opts.on('--playback', 'Playback a previously recorded session from the given file.') do |filename|
182
+ # nop, hack fix.
183
+ end
184
+
185
+ opts.on('--cluster', 'Setup a cluster.') do |ic|
186
+ # nop, hack fix.
187
+ end
188
+
212
189
  end
213
190
 
214
191
  parser.parse!(ARGV)
@@ -220,7 +197,7 @@ class Runner
220
197
  # using the passed configuration parameters.
221
198
 
222
199
  def setup_mode
223
- case self.class.mode
200
+ case Configuration.mode
224
201
  when :debug
225
202
  setup_debug
226
203
 
@@ -249,7 +226,7 @@ class Runner
249
226
  autoreload(3)
250
227
  Caching.caching_enabled = false
251
228
 
252
- load_external_configuration(:debug)
229
+ # load_external_configuration(:debug)
253
230
  end
254
231
 
255
232
  def setup_stage
@@ -258,7 +235,7 @@ class Runner
258
235
  autoreload(3)
259
236
  Logger.set(Logger.new('log/app.log'))
260
237
 
261
- load_external_configuration(:stage)
238
+ # load_external_configuration(:stage)
262
239
  end
263
240
 
264
241
  def setup_live
@@ -273,8 +250,8 @@ class Runner
273
250
  autoreload(2 * 60)
274
251
  Logger.set(Logger.new('log/app.log'))
275
252
 
276
- load_external_configuration(:live)
277
- load_external_configuration(:production)
253
+ # load_external_configuration(:live)
254
+ # load_external_configuration(:production)
278
255
  end
279
256
  alias_method :setup_production, :setup_live
280
257
 
@@ -296,8 +273,10 @@ class Runner
296
273
 
297
274
  when 'irb'
298
275
  require 'nitro/adapter/console'
276
+ require 'nitro/caching/proxy'
299
277
  $server = server
300
278
  $app = ConsoleAdapter.new(server)
279
+ $cache = Caching::Proxy
301
280
 
302
281
  else
303
282
  invoke_server(server)
@@ -312,6 +291,7 @@ class Runner
312
291
  # FIXME refactor !
313
292
  server.address = @server_address if @server_address
314
293
  server.port = @server_port if @server_port
294
+ server.port += @server_port_offset if @server_port_offset
315
295
 
316
296
  case @action
317
297
  when :start
@@ -329,22 +309,24 @@ class Runner
329
309
  end
330
310
  end
331
311
 
332
- @server ||= Runner.adapter
312
+ @server = Nitro.adapter
333
313
 
334
- puts "\n==> Setup for #{self.class.mode} mode"
314
+ Logger.info ""
315
+ Logger.info "Setup for #{Configuration.mode} mode."
335
316
 
336
317
  case @server
337
318
  when :webrick
338
319
  require 'nitro/adapter/webrick'
339
- puts "==> Listening at #{server.address}:#{server.port}. [WEBRICK]"
340
- puts "==> Press Ctrl-C to shutdown; Run with --help for options.\n\n"
320
+ Logger.info "Starting Webrick on #{server.address}:#{server.port}"
321
+ Logger.info "Press Ctrl-C to shutdown; Run with --help for options."
322
+ Logger.info ""
341
323
  Webrick.start(server)
342
324
 
343
325
  when :mongrel
344
326
  require 'nitro/adapter/mongrel'
345
- puts "==> Listening at #{server.address}:#{server.port}. [MONGREL]"
346
- puts "==> Press Ctrl-C to shutdown; Run with --help for options.\n\n"
347
-
327
+ Logger.info "Starting Mongrel on #{server.address}:#{server.port}"
328
+ Logger.info "Press Ctrl-C to shutdown; Run with --help for options."
329
+ Logger.info ""
348
330
  Mongrel.start(server)
349
331
 
350
332
  when :lhttpd
@@ -352,11 +334,6 @@ class Runner
352
334
  puts "==> Launching lighttpd (FastCGI)."
353
335
  `lighttpd -f conf/lhttpd_fcgi.conf`
354
336
 
355
- when :lhttpd_scgi
356
- require 'nitro/adapter/scgi'
357
- puts "==> Launching lighttpd (SCGI)."
358
- `lighttpd -f conf/lhttpd_scgi.conf`
359
-
360
337
  when :apache
361
338
  require 'nitro/adapter/fastcgi'
362
339
  puts "==> Launching apache (FastCGI)."
@@ -366,11 +343,6 @@ class Runner
366
343
  require 'nitro/adapter/cgi'
367
344
  puts "==> Using standard CGI. Please look into using Fast/Scgi"
368
345
 
369
-
370
- when :scgi
371
- require 'nitro/adapter/scgi'
372
- SCGI.start(server)
373
-
374
346
  end
375
347
 
376
348
  when :stop
@@ -394,13 +366,22 @@ class Runner
394
366
 
395
367
  def daemonize
396
368
  require 'daemons/daemonize'
369
+
397
370
  pwd = Dir.pwd
398
371
  Daemonize.daemonize(File.join(pwd, 'log/app.log'))
372
+
399
373
  # Restore the original pwd (daemonize sets the
400
374
  # pwd to '/').
375
+
401
376
  Dir.chdir(pwd)
377
+
378
+ # Save a process sentinel file.
379
+
380
+ FileUtils.touch ".a#{Process.pid}.pid"
381
+
402
382
  # Set the logger to a file (daemonize closes the
403
383
  # std streams).
384
+
404
385
  Logger.set(Logger.new('log/app.log'))
405
386
  end
406
387
 
@@ -429,6 +410,3 @@ end
429
410
  Run = Runner
430
411
 
431
412
  end
432
-
433
- # * George Moschovitis <gm@navel.gr>
434
- # * James Britt <james_b@neurogami.com>
@@ -22,4 +22,3 @@ end
22
22
 
23
23
  end
24
24
 
25
- # * George Moschovitis <gm@navel.gr>
@@ -39,5 +39,3 @@ class XmlRpcService < Service
39
39
  end
40
40
 
41
41
  end
42
-
43
- # * George Moschovitis <gm@navel.gr>
@@ -55,28 +55,39 @@ class Session < Hash
55
55
 
56
56
  setting :keepalive, :default => 30.minutes, :doc => 'The session keepalive time'
57
57
 
58
+ # The type of the session cache. The generalized caching
59
+ # system in Glue is used. The following options are available:
60
+ #
61
+ # * :memory [default]
62
+ # * :drb
63
+ # * :og
64
+ # * :file
65
+ # * :memcached
66
+
67
+ setting :cache_type, :default => :memory, :doc => 'The type of session cache'
68
+
69
+ # The address of the cache store.
70
+
71
+ setting :cache_address, :default => '127.0.0.1', :doc => 'The address of the cache store'
72
+
73
+ # The port of the cache store.
74
+
75
+ setting :cache_port, :default => 9069, :doc => 'The port of the cache store'
76
+
58
77
  class << self
59
78
 
60
79
  # The sessions cache (store).
61
80
 
62
81
  attr_accessor :cache
63
-
64
- # Set the session cache. The generalized caching system in
65
- # Glue is used. The following options are available:
66
- #
67
- # * :memory [default]
68
- # * :drb
69
- # * :og
70
- # * :file
71
- # * :memcached
72
-
73
- def cache_type=(cache_type)
82
+ alias store cache
83
+
84
+ # Load the correct Session specialization according to the
85
+ # cache type.
86
+
87
+ def setup(type = Session.cache_type)
74
88
  # gmosx: RDoc friendly.
75
- require 'nitro/session/' + cache_type.to_s
89
+ require 'nitro/session/' + type.to_s
76
90
  end
77
- alias_method :set_cache_type, :cache_type=
78
- alias_method :store_type=, :cache_type=
79
- alias_method :set_store_type, :cache_type=
80
91
 
81
92
  # Lookup the session in the cache by using the session
82
93
  # cookie value as a key. If the session does not exist
@@ -188,6 +199,3 @@ protected
188
199
  end
189
200
 
190
201
  end
191
-
192
- # * George Moschovitis <gm@navel.gr>
193
- # * Guillaume Pierronnet <guillaume.pierronnet@gmail.com>