nitro 0.8.0 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. data/AUTHORS +3 -4
  2. data/ChangeLog +418 -0
  3. data/LICENSE +1 -1
  4. data/README +157 -89
  5. data/RELEASES +50 -0
  6. data/Rakefile +5 -7
  7. data/benchmark/nitro/bench.rb +5 -0
  8. data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
  9. data/benchmark/nitro/static-webrick-n-200.txt +43 -0
  10. data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
  11. data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
  12. data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
  13. data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
  14. data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
  15. data/bin/proto/README +2 -2
  16. data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
  17. data/bin/proto/conf/app.conf.rb +22 -0
  18. data/bin/proto/conf/lhttpd.conf +236 -0
  19. data/bin/proto/ctl +4 -0
  20. data/bin/proto/lib/README +5 -0
  21. data/bin/proto/log/README +3 -0
  22. data/bin/proto/root/fcgi.rb +6 -0
  23. data/bin/proto/root/index.xhtml +65 -7
  24. data/bin/proto/root/m/nitro.png +0 -0
  25. data/examples/blog/README +7 -5
  26. data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
  27. data/examples/blog/conf/app.conf.rb +56 -0
  28. data/examples/blog/conf/lhttpd.conf +236 -0
  29. data/examples/blog/ctl +4 -0
  30. data/examples/blog/lib/blog.rb +11 -136
  31. data/examples/blog/lib/blog/controller.rb +99 -0
  32. data/examples/blog/lib/blog/model.rb +39 -0
  33. data/examples/blog/log/README +3 -0
  34. data/examples/blog/root/comments.xhtml +2 -2
  35. data/examples/blog/root/fcgi.rb +6 -0
  36. data/examples/blog/root/index.xhtml +4 -5
  37. data/examples/blog/root/login.xhtml +2 -2
  38. data/examples/blog/root/style.xsl +9 -9
  39. data/examples/blog/root/view_entry.xhtml +2 -2
  40. data/examples/flash/conf/app.conf.rb +23 -0
  41. data/examples/flash/ctl +4 -0
  42. data/examples/flash/log/README +3 -0
  43. data/examples/flash/root/index.xhtml +0 -9
  44. data/examples/flash/root/show_inline_text.xhtml +10 -5
  45. data/examples/no_xsl_blog/README +12 -0
  46. data/examples/no_xsl_blog/conf/apache.conf +0 -0
  47. data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
  48. data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
  49. data/examples/no_xsl_blog/ctl +4 -0
  50. data/examples/no_xsl_blog/lib/blog.rb +20 -0
  51. data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
  52. data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
  53. data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
  54. data/examples/no_xsl_blog/log/README +3 -0
  55. data/examples/no_xsl_blog/root/comments.xhtml +41 -0
  56. data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
  57. data/examples/no_xsl_blog/root/fcgi.rb +6 -0
  58. data/examples/no_xsl_blog/root/index.xhtml +39 -0
  59. data/examples/no_xsl_blog/root/login.xhtml +21 -0
  60. data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
  61. data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
  62. data/examples/no_xsl_blog/root/m/down.gif +0 -0
  63. data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
  64. data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
  65. data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
  66. data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
  67. data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
  68. data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
  69. data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
  70. data/examples/no_xsl_blog/root/m/obull.gif +0 -0
  71. data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
  72. data/examples/no_xsl_blog/root/m/rss.gif +0 -0
  73. data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
  74. data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
  75. data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
  76. data/examples/no_xsl_blog/root/style.css +301 -0
  77. data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
  78. data/examples/no_xsl_blog/root/view_entry.xml +12 -0
  79. data/examples/og/run.rb +2 -2
  80. data/examples/tiny/README +2 -2
  81. data/examples/tiny/conf/apache.conf +5 -0
  82. data/examples/tiny/conf/app.conf.rb +21 -0
  83. data/examples/tiny/conf/lhttpd.conf +236 -0
  84. data/examples/tiny/ctl +4 -0
  85. data/examples/tiny/log/README +3 -0
  86. data/examples/tiny/root/fcgi.rb +6 -0
  87. data/examples/tiny/root/index.xhtml +7 -4
  88. data/examples/tiny/root/nitro.png +0 -0
  89. data/lib/glue.rb +13 -9
  90. data/lib/glue/array.rb +1 -1
  91. data/lib/glue/cache.rb +1 -1
  92. data/lib/glue/flexob.rb +12 -0
  93. data/lib/glue/hash.rb +1 -1
  94. data/lib/glue/inflector.rb +2 -2
  95. data/lib/glue/logger.rb +4 -8
  96. data/lib/glue/misc.rb +14 -0
  97. data/lib/glue/number.rb +1 -1
  98. data/lib/glue/object.rb +26 -0
  99. data/lib/glue/pool.rb +1 -1
  100. data/lib/glue/property.rb +84 -91
  101. data/lib/glue/string.rb +1 -1
  102. data/lib/glue/time.rb +1 -1
  103. data/lib/glue/validation.rb +1 -1
  104. data/lib/nitro.rb +18 -6
  105. data/lib/nitro/adaptors/cgi.rb +291 -0
  106. data/lib/nitro/adaptors/fastcgi.rb +42 -0
  107. data/lib/nitro/adaptors/runner.rb +123 -0
  108. data/lib/nitro/adaptors/webrick.rb +110 -0
  109. data/lib/nitro/buffering.rb +43 -0
  110. data/lib/nitro/builders/form.rb +1 -1
  111. data/lib/nitro/builders/rss.rb +1 -1
  112. data/{bin → lib/nitro}/cluster.rb +26 -30
  113. data/lib/nitro/context.rb +82 -0
  114. data/lib/nitro/controller.rb +50 -0
  115. data/lib/nitro/cookie.rb +46 -0
  116. data/lib/nitro/dispatcher.rb +105 -0
  117. data/lib/nitro/filters.rb +9 -10
  118. data/lib/nitro/localization.rb +42 -0
  119. data/lib/nitro/mail.rb +11 -14
  120. data/lib/nitro/render.rb +275 -0
  121. data/lib/nitro/request.rb +128 -0
  122. data/lib/nitro/response.rb +38 -0
  123. data/lib/nitro/scaffold.rb +11 -11
  124. data/lib/nitro/session.rb +84 -0
  125. data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
  126. data/lib/nitro/ui/pager.rb +23 -26
  127. data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
  128. data/lib/nitro/uri.rb +1 -1
  129. data/lib/nitro/version.rb +10 -8
  130. data/lib/og.rb +66 -65
  131. data/lib/og/backend.rb +1 -1
  132. data/lib/og/backends/mysql.rb +48 -52
  133. data/lib/og/backends/psql.rb +34 -37
  134. data/lib/og/connection.rb +15 -15
  135. data/lib/og/enchant.rb +16 -9
  136. data/lib/og/meta.rb +127 -54
  137. data/lib/og/mock.rb +18 -18
  138. data/lib/og/version.rb +6 -4
  139. data/lib/parts/content.rb +4 -8
  140. data/test/glue/tc_logger.rb +3 -0
  141. data/test/glue/tc_property.rb +19 -3
  142. data/test/nitro/adaptors/tc_cgi.rb +63 -0
  143. data/test/nitro/adaptors/tc_webrick.rb +15 -0
  144. data/test/nitro/builders/tc_xml.rb +2 -2
  145. data/test/nitro/tc_context.rb +13 -0
  146. data/test/nitro/tc_controller.rb +47 -0
  147. data/test/nitro/tc_dispatcher.rb +64 -0
  148. data/test/nitro/tc_session.rb +20 -0
  149. data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
  150. data/test/root/blog/list.xhtml +6 -0
  151. data/test/tc_og.rb +41 -4
  152. metadata +115 -59
  153. data/bin/proto/app.rb +0 -20
  154. data/bin/proto/config.rb +0 -77
  155. data/examples/blog/app.rb +0 -21
  156. data/examples/blog/config.rb +0 -95
  157. data/examples/blog/env.rb +0 -22
  158. data/examples/flash/README +0 -34
  159. data/examples/flash/app.rb +0 -20
  160. data/examples/flash/config.rb +0 -38
  161. data/examples/flash/lib/flash.rb +0 -40
  162. data/examples/flash/tmp.swf +0 -0
  163. data/examples/tiny/app.rb +0 -19
  164. data/examples/tiny/config.rb +0 -29
  165. data/examples/tiny/root/nitro-small.png +0 -0
  166. data/lib/nitro/application.rb +0 -217
  167. data/lib/nitro/config.rb +0 -128
  168. data/lib/nitro/events.rb +0 -122
  169. data/lib/nitro/html.rb +0 -151
  170. data/lib/nitro/http.rb +0 -102
  171. data/lib/nitro/l10n.rb +0 -30
  172. data/lib/nitro/server.rb +0 -59
  173. data/lib/nitro/server/appserver.rb +0 -67
  174. data/lib/nitro/server/cookie.rb +0 -87
  175. data/lib/nitro/server/dispatcher.rb +0 -62
  176. data/lib/nitro/server/filters.rb +0 -75
  177. data/lib/nitro/server/filters/autologin.rb +0 -51
  178. data/lib/nitro/server/fragment.rb +0 -70
  179. data/lib/nitro/server/handlers.rb +0 -127
  180. data/lib/nitro/server/render.rb +0 -426
  181. data/lib/nitro/server/request.rb +0 -658
  182. data/lib/nitro/server/requestpart.rb +0 -54
  183. data/lib/nitro/server/script.rb +0 -387
  184. data/lib/nitro/server/server.rb +0 -57
  185. data/lib/nitro/server/session.rb +0 -220
  186. data/lib/nitro/server/user.rb +0 -46
  187. data/lib/nitro/server/webrick.rb +0 -180
  188. data/lib/nitro/service.rb +0 -26
  189. data/lib/xsl/ui.xsl +0 -51
  190. data/lib/xsl/xforms.xsl +0 -28
  191. data/test/nitro/server/tc_cookie.rb +0 -34
  192. data/test/nitro/server/tc_filters.rb +0 -38
  193. data/test/nitro/server/tc_request.rb +0 -70
  194. data/test/nitro/server/tc_requestpart.rb +0 -28
  195. data/test/nitro/server/tc_session.rb +0 -34
  196. data/test/nitro/tc_events.rb +0 -44
  197. data/test/nitro/tc_html.rb +0 -79
  198. data/test/nitro/tc_http.rb +0 -18
@@ -1,54 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: requestpart.rb 167 2004-11-23 14:03:10Z gmosx $
6
-
7
- require "cgi"
8
- require "ftools"
9
-
10
- require "glue/string"
11
- require "nitro/uri"
12
- require "nitro/http"
13
- require "nitro/server/cookie"
14
-
15
- module N
16
-
17
- # RequestPart
18
- #
19
- # This class encapsulates a part in a multipart request.
20
- # A part is typically an uploaded files.
21
- #
22
- class RequestPart
23
- # the filename of the part
24
- attr_accessor :filename
25
-
26
- # the original filename path
27
- attr_accessor :original_path
28
-
29
- # the temp filename path
30
- attr_accessor :body
31
-
32
- # the content-type
33
- attr_accessor :content_type
34
-
35
- def initialize(original_path, body, content_type = nil)
36
- @original_path = original_path
37
- @body = body
38
- @content_type = content_type
39
- # handle dos + unix separators.
40
- @filename = @original_path.split(/\/|\\/).last
41
- end
42
-
43
- # gmosx:
44
- # Hack fixed save for webrick!
45
- #
46
- def save(prefix, forced_filename = nil, forced_extension = nil)
47
- ::FileUtils.mkdir_p(prefix)
48
- save_path = "#{prefix}/#{@filename}"
49
- ::File.open(save_path, "wb") {|f| f.write @body }
50
- return save_path
51
- end
52
- end
53
-
54
- end # module
@@ -1,387 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: script.rb 167 2004-11-23 14:03:10Z gmosx $
6
-
7
- require "fileutils"
8
-
9
- require "glue/cache"
10
- require "nitro/server/fragment"
11
-
12
- module N
13
-
14
- # = ScriptExitException
15
- #
16
- # Raise this Exception in your Script to avoid processing.
17
- # Typicaly used in request.redirect scenarios!
18
- #
19
- class ScriptExitException < Exception; end
20
-
21
- end # module
22
-
23
- module N
24
-
25
- # = Script
26
- #
27
- # Base class for scripts. Typically a handler evaluates a script.
28
- # The base class describing a script is defined here.
29
- # A generalized fragment caching system is also defined.
30
- #
31
- # see handlers/page-handler::PageScript for more information.
32
- #--
33
- # no need to prepend __ to the attributes! (@ is prepended)
34
- #++
35
- #
36
- class Script
37
- # gmosx: it would be a good idea to make this a singleton, but we
38
- # had some problems when redefining the class when monitor_scripts
39
- # is enabled. investigate this!
40
- # include Singleton
41
-
42
- # the full path to the actual script file
43
- attr_accessor :path
44
-
45
- # the sub scripts.
46
- attr_accessor :sub_scripts
47
-
48
- attr_accessor :key
49
-
50
- # is this script cacheable? NONE, SERVER, DOWNSTREAM, CLIENT
51
- attr_accessor :cacheability
52
-
53
- def initialize(path)
54
- @path = "#$root_dir/#{path}"
55
-
56
- # gmosx, INVESTIGATE: createtime == filemtime ?
57
-
58
- # the creation time for this script-class
59
- @create_time = Time.now
60
-
61
- # when the filename was last modified
62
- @file_mtime = File.mtime(@path).to_i
63
-
64
- # sub-scripts set: a set of files this script depends on.
65
- # We use a hash to implement a set.
66
- @sub_scripts = N::SafeArray.new
67
-
68
- # a cache for the script outputs (fragments). Keeps multiple revisions
69
- # of the script output according to user, access rights etc.
70
- # must be thread safe because it is shared accross threads.
71
- #
72
- # gmosx: DONT DEPRECATE THIS! if we switch to FastCGI, perhaps
73
- # this will be needed!
74
- #
75
- # DISK CACHING IS SLOW!
76
- #
77
- @fragment_cache = N::LRUCache.new(1000)
78
-
79
- __init()
80
- end
81
-
82
- # This method is called at compile time to perform
83
- # additional initialization.
84
- #
85
- def __init
86
- end
87
-
88
- # This method is called before rendering to perform
89
- # additional initialization.
90
- #
91
- def __init_render(request)
92
- # nop
93
- end
94
-
95
- # Tag for this request
96
- #
97
- def __tag(request)
98
- # gmosx: dont return nil!
99
- return ""
100
- end
101
-
102
- # Recursively calculate tag.
103
- #
104
- def __calc_tag(request)
105
- tag = __tag(request)
106
-
107
- if @sub_scripts
108
- for script in @sub_scripts
109
- tag << script.__calc_tag(request)
110
- end
111
- end
112
-
113
- return tag
114
- end
115
-
116
- # Calculate LastModified for HTTP1.1 caching
117
- # Return the last modified time for this script.
118
- #
119
- def __lm(request)
120
- return nil
121
- end
122
-
123
- # Calculate LastModified for HTTP1.1 caching
124
- # takes into account all subscripts! also takes into account
125
- # the script file modification
126
- #
127
- def __calc_lm(request)
128
- unless lm = __lm(request)
129
- lm = @file_mtime
130
- else
131
- lm = @file_mtime if @file_mtime > lm
132
- end
133
-
134
- if @sub_scripts
135
- for script in @sub_scripts
136
- if slm = script.__calc_lm(request)
137
- unless lm
138
- lm = slm
139
- else
140
- lm = slm if slm > lm
141
- end
142
- end
143
- end
144
- end
145
-
146
- return lm
147
- end
148
-
149
- # Calculates the ETag fof HTTP1.1 caching. This etag is typically
150
- # used in the downstream, so we can be VERY granular :-) ie
151
- # we can even encode a user id!
152
- #
153
- # Coded by top level scripts only!
154
- # Typically combines __tag and __last_modified
155
- #
156
- def __etag(request)
157
- return "#{__calc_lm(request)}#{__calc_tag(request)}#{request.tag}" # .hash.to_s
158
- end
159
-
160
- # Is this script cacheable for this request?
161
- #
162
- def __cache?(request)
163
- # By default if lm is overriden the page is cacheable
164
- return __lm(request)
165
- end
166
-
167
- #---------------------------------------------------------------------
168
- # Caching logic:
169
- #
170
-
171
- # gmosx, DEPRECATED: the following caching methods are deprecated!
172
- # they are still used by rx handler though!
173
-
174
- # clear the fragment_cache
175
- #
176
- def __cache_clear
177
- @fragment_cache.clear
178
- end
179
-
180
- # get a fragment from the fragment cache in a thread safe manner.
181
- #
182
- # Output:
183
- # the fragment object encapsulating the output of this script.
184
- #
185
- def __cache_get(key)
186
- return @fragment_cache[key]
187
- end
188
-
189
- # add a new fragment in the fragment cache in a thread safe manner.
190
- # encapsulate the fragment text (== body) in a fragment object.
191
- #
192
- def __cache_put(key, fragment)
193
- @fragment_cache[key] = fragment
194
- end
195
-
196
- #--------------------------------------------------------------------------
197
- # Rendering logic:
198
-
199
- # renders the script as html output to be send to the
200
- # borwser.
201
- # the output of this script is the script fragment.
202
- # this method is constructed dynamically by the handler.
203
- #
204
- # Design:
205
- #
206
- # the parameters to this method are visible to page scripts.
207
- # in order to avoid namespace pollution and dangerous bugs in the
208
- # scripts we prepend an underscore to differentiate them. n1 used
209
- # @variables (class attributes) but we believe they where thread-unsafe.
210
- #
211
- def __render(request)
212
- end
213
-
214
- # Dynamically include ("inject") a subpage (fragment) in this page.
215
- # Dynamic means at run-time.
216
- #
217
- def __inject(url, request)
218
- return ""
219
- end
220
-
221
- # Dynamically include ("inject") a subpage (fragment) in this page.
222
- # Dynamic means at run-time.
223
-
224
- def __include(url, request)
225
- return ""
226
- end
227
-
228
- def __create_time
229
- return @create_time
230
- end
231
-
232
- def __file_mtime
233
- return @file_mtime
234
- end
235
-
236
- def __path
237
- return @path
238
- end
239
-
240
- #--------------------------------------------------------------------------
241
- # Actions:
242
-
243
- def admin?(request)
244
- return false;
245
- end
246
-
247
- # Encodes an action url to the same page.
248
- # Params is almost always != nil, no need to optimize the case.
249
- #
250
- def __action(request, params = nil)
251
- if request.parameters.empty?
252
- return "#{request.translated_uri}?#{params}"
253
- else
254
- return "#{request.translated_uri}?#{request.query_string};#{params}"
255
- end
256
- end
257
- alias_method :_a, :__action
258
-
259
- #--------------------------------------------------------------------------
260
- # Hooks:
261
-
262
- # executed prior to script evaluation, even for cached fragments!
263
- # not used yet.
264
- #
265
- def __pre_evaluate(request)
266
- end
267
-
268
- # executed after script evaluation, even for cached fragments!
269
- # not used yet.
270
-
271
- def __post_evaluate(request)
272
- end
273
-
274
- # Pre-render hook. NOT executed for cached fragments
275
- # not used yet.
276
- #
277
- # Returns:
278
- # text that is prepended to the request, by default the EMPTY_STRING
279
- #
280
- def __pre_render(request)
281
- return EMPTY_STRING
282
- end
283
-
284
- # Post-render hook. NOT executed for cached fragments.
285
- # not used yet.
286
- #
287
- # Returns:
288
- # text that is appended to the request, by default the EMPTY_STRING
289
- #
290
- def __post_render(request)
291
- return EMPTY_STRING
292
- end
293
-
294
- # Calculate a hash modifier (flag) to differentiate caching according
295
- # to user roles or other dynamic conditions. The calculated flag
296
- # is appended to the fragmant hash.
297
- #
298
- # Design:
299
- # use this separate method to allow the top level page to
300
- # collect the flags for all sub-pages and build
301
- # a super-flag.
302
- #
303
- def cache_flag(request)
304
- return Fragment::ADMIN_FLAG if admin?(request)
305
- end
306
-
307
- # enable fragment caching for this script?
308
- # to avoid storing in the cache uncacheable fragments
309
- #
310
- def cache?(request)
311
- # gmosx: AAAAAAAAARGHHH!!! NASTY keep this false!
312
- # to save memory!
313
- return false
314
- end
315
-
316
- # is the output of the script (the fragment) valid for this request?
317
- # used for cache invalidation calculations. By default returns false.
318
- #
319
- # Input:
320
- # __fragment_key: the server automatically generates a fragment_key (typically
321
- # the request.real_path) and passes this to this methods for further
322
- # customization. The key passed is the base key, the method is responsible to
323
- # build the final key (taking user roles, etc into account).
324
- # request: used to customize the fragment_key for this request.
325
- # customized fragment_keys denote request classes.
326
- #
327
- # Output:
328
- # is the fragment valid for this request?
329
- #
330
- # Side-effects:
331
- # WARNING: the method potentially modifies __fragment_key!
332
- #
333
- def cache_valid?(fragment, request)
334
- return false
335
- end
336
-
337
- # authorize access to this script ?
338
- #
339
- def __authorize?(request)
340
- return true
341
- end
342
-
343
- # get the shader to use for this script
344
- #
345
- def __shader(request)
346
- return nil
347
- end
348
-
349
- # force a logged-in user for this page.
350
- # implemented like the n1-version to avoid checking everytime
351
- # for login, use the if __force method.
352
- #
353
- def __force_login(request)
354
- if request.session["USER"].anonymous?
355
- request.redirect("/id/login.sx?_go=#{request.uri}")
356
- return false
357
- end
358
- return true
359
- end
360
-
361
- # --------------------------------------------------------------------
362
- # Macros
363
- # TODO: create more usefull macros for admin?/cache_valid? etc.
364
-
365
- # Sets cache?() to return true
366
- #
367
- def self.enable_cache!
368
- class_eval %{
369
- def __cache?(request)
370
- return true
371
- end
372
- }
373
- end
374
-
375
- # Evals a standard admin?() method.
376
- #
377
- def self.admin_role(role)
378
- class_eval %{
379
- def admin?(request)
380
- return request.user.role?("#{role}")
381
- end
382
- }
383
- end
384
-
385
- end
386
-
387
- end # module
@@ -1,57 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: server.rb 167 2004-11-23 14:03:10Z gmosx $
6
-
7
- require "drb"
8
-
9
- require "nitro/application"
10
- require "nitro/server"
11
- require "nitro/app/session"
12
-
13
- module N; module App
14
-
15
- # = ServerMixin
16
- #
17
- # Usefull application server related methods.
18
- #
19
- module ServerMixin
20
-
21
- def initialize_app
22
- if $drb_state
23
- # Cluster mode: use distributed Ruby objects.
24
- $lm = N::Cluster::Slm.new($drb_lm_server, "druby://:8000")
25
- $sessions = DRbObject.new(nil, $drb_sessions_cluster)
26
- else
27
- # NoCluster mode: use standard Ruby onjects.
28
- $lm = N::SafeHash.new
29
- $sessions = N::App::SessionManager.new
30
- end
31
-
32
- # initialize app
33
- initialize_sitemap()
34
- initialize_shaders()
35
- initialize_events()
36
- end
37
-
38
- end
39
-
40
- # = Server
41
- #
42
- # The Application Server. Handles dynamic requests in a web application.
43
- # Dont keepalive (or use a VERY SMALL keepalive). Typically this server
44
- # is used along with a standars http server that handles other resources.
45
- #
46
- class Server < N::Server
47
- include N::App::ServerMixin
48
-
49
- def initialize(name = "AppServer")
50
- super
51
- initialize_app()
52
-
53
- Logger.info "Server listening at #$srv_url"
54
- end
55
- end
56
-
57
- end; end # module