nitro 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +3 -0
- data/ChangeLog +83 -0
- data/LICENCE +8 -8
- data/README +5 -1
- data/RELEASES +9 -0
- data/Rakefile +43 -23
- data/bin/cluster.rb +15 -12
- data/examples/ndb/README +5 -0
- data/examples/ndb/run.rb +271 -0
- data/examples/simple/README +27 -0
- data/examples/simple/app.rb +2 -2
- data/examples/simple/conf/config.rb +3 -8
- data/examples/simple/conf/debug-config.rb +6 -7
- data/examples/simple/conf/live-config.rb +2 -4
- data/examples/simple/conf/requires.rb +2 -10
- data/examples/simple/ctl +1 -1
- data/examples/simple/env.rb +2 -2
- data/examples/simple/root/article-form.ss +1 -1
- data/examples/simple/root/comments-form.ss +1 -1
- data/examples/tiny/README +15 -0
- data/examples/tiny/app.rb +2 -2
- data/examples/tiny/conf/config.rb +8 -13
- data/examples/tiny/conf/requires.rb +2 -8
- data/examples/tiny/ctl +2 -17
- data/examples/tiny/root/index.sx +1 -1
- data/lib/n/app/cluster.rb +15 -12
- data/lib/n/app/cookie.rb +10 -9
- data/lib/n/app/filters/autologin.rb +5 -4
- data/lib/n/app/fragment.rb +13 -10
- data/lib/n/app/handlers.rb +29 -22
- data/lib/n/app/handlers/code-handler.rb +2 -4
- data/lib/n/app/handlers/page-handler.rb +3 -5
- data/lib/n/app/request-part.rb +2 -7
- data/lib/n/app/request.rb +27 -22
- data/lib/n/app/script.rb +4 -15
- data/lib/n/app/server.rb +11 -7
- data/lib/n/app/session.rb +7 -11
- data/lib/n/app/user.rb +10 -11
- data/lib/n/app/webrick-servlet.rb +23 -10
- data/lib/n/app/webrick.rb +13 -10
- data/lib/n/application.rb +13 -6
- data/lib/n/config.rb +18 -7
- data/lib/n/db.rb +56 -40
- data/lib/n/db/connection.rb +18 -22
- data/lib/n/db/managed.rb +6 -8
- data/lib/n/db/mixins.rb +4 -7
- data/lib/n/db/mysql.rb +6 -3
- data/lib/n/db/psql.rb +15 -10
- data/lib/n/db/tools.rb +5 -9
- data/lib/n/db/utils.rb +11 -8
- data/lib/n/events.rb +14 -10
- data/lib/n/logger.rb +8 -2
- data/lib/n/macros.rb +5 -2
- data/lib/n/parts.rb +13 -10
- data/lib/n/properties.rb +17 -12
- data/lib/n/server.rb +3 -2
- data/lib/n/server/filter.rb +2 -4
- data/lib/n/shaders.rb +11 -13
- data/lib/n/sitemap.rb +23 -20
- data/lib/n/std.rb +15 -4
- data/lib/n/sync/clc.rb +4 -2
- data/lib/n/sync/handler.rb +20 -12
- data/lib/n/sync/server.rb +24 -18
- data/lib/n/ui/date-select.rb +2 -4
- data/lib/n/ui/pager.rb +10 -8
- data/lib/n/ui/popup.rb +5 -4
- data/lib/n/ui/select.rb +3 -4
- data/lib/n/ui/tabs.rb +3 -4
- data/lib/n/utils/array.rb +6 -14
- data/lib/n/utils/cache.rb +3 -7
- data/lib/n/utils/gfx.rb +5 -6
- data/lib/n/utils/hash.rb +7 -12
- data/lib/n/utils/html.rb +8 -4
- data/lib/n/utils/http.rb +10 -6
- data/lib/n/utils/mail.rb +6 -6
- data/lib/n/utils/number.rb +3 -4
- data/lib/n/utils/pool.rb +5 -8
- data/lib/n/utils/string.rb +12 -10
- data/lib/n/utils/template.rb +3 -5
- data/lib/n/utils/time.rb +7 -5
- data/lib/n/utils/uri.rb +5 -4
- data/lib/p/README +1 -0
- data/lib/xsl/xforms.xsl +2 -0
- data/test/n/app/tc_cookie.rb +34 -0
- data/test/n/app/tc_request.rb +70 -0
- data/test/n/app/tc_requestpart.rb +28 -0
- data/test/n/app/tc_session.rb +34 -0
- data/test/n/tc_db.rb +223 -0
- data/test/n/tc_db_mysql.rb +241 -0
- data/test/n/tc_events.rb +44 -0
- data/test/n/tc_properties.rb +68 -0
- data/test/n/tc_sitemap.rb +37 -0
- data/test/n/ui/tc_pager.rb +52 -0
- data/test/n/utils/tc_cache.rb +47 -0
- data/test/n/utils/tc_hash.rb +39 -0
- data/test/n/utils/tc_html.rb +79 -0
- data/test/n/utils/tc_http.rb +18 -0
- data/test/n/utils/tc_number.rb +21 -0
- data/test/n/utils/tc_strings.rb +149 -0
- data/test/n/utils/tc_uri.rb +100 -0
- metadata +49 -22
- data/doc/css.txt +0 -20
- data/doc/ideas.txt +0 -120
- data/doc/pg.txt +0 -47
- data/doc/svn.txt +0 -82
- data/doc/todo.txt +0 -30
- data/examples/simple/conf/overrides.rb +0 -9
- data/examples/simple/logs/access_log +0 -2
- data/examples/simple/logs/apache.log +0 -3
- data/examples/simple/logs/app.log +0 -1
- data/examples/simple/logs/events.log +0 -1
- data/examples/tiny/conf/apache.conf +0 -100
- data/examples/tiny/logs/access_log +0 -9
- data/examples/tiny/logs/apache.log +0 -9
- data/lib/n/db/make-release.sh +0 -26
- data/lib/n/tools/README +0 -11
- data/lib/xsl/ce.xsl +0 -30
- data/lib/xsl/localization.xsl +0 -23
- data/test/run.rb +0 -95
data/lib/n/app/fragment.rb
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# code:
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
3
|
+
#
|
|
4
|
+
# (c) 2004 Navel, all rights reserved.
|
|
5
|
+
# $Id: fragment.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
6
|
+
|
|
7
|
+
require "n/utils/cache"
|
|
8
|
+
require "n/mixins"
|
|
9
|
+
|
|
10
|
+
module N; module App
|
|
11
|
+
|
|
1
12
|
# = Fragment
|
|
2
13
|
#
|
|
3
14
|
# A Fragment is the output of a rendered script. Additional metadata
|
|
@@ -16,16 +27,6 @@
|
|
|
16
27
|
# - less memory per server
|
|
17
28
|
# - can run background cron scripts over the fragments (compression)
|
|
18
29
|
#
|
|
19
|
-
# code:: gmosx
|
|
20
|
-
#
|
|
21
|
-
# (c) 2004 Navel, all rights reserved.
|
|
22
|
-
# $Id: fragment.rb 71 2004-10-18 10:50:22Z gmosx $
|
|
23
|
-
|
|
24
|
-
require "n/utils/cache"
|
|
25
|
-
require "n/mixins"
|
|
26
|
-
|
|
27
|
-
module N; module App
|
|
28
|
-
|
|
29
30
|
class Fragment
|
|
30
31
|
include N::Expirable
|
|
31
32
|
include N::LRUCache::Item
|
|
@@ -55,6 +56,8 @@ class Fragment
|
|
|
55
56
|
@expires = @lm + ea
|
|
56
57
|
end
|
|
57
58
|
|
|
59
|
+
# Is the fragment expired?
|
|
60
|
+
#
|
|
58
61
|
def expired?
|
|
59
62
|
return true if @expires.nil? || (Time.now > @expires)
|
|
60
63
|
end
|
data/lib/n/app/handlers.rb
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
#
|
|
1
|
+
# code:
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
2
3
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# (c) 2002-2003 Navel, all rights reserved.
|
|
6
|
-
# $Id: handlers.rb 71 2004-10-18 10:50:22Z gmosx $
|
|
4
|
+
# (c) 2004 Navel, all rights reserved.
|
|
5
|
+
# $Id: handlers.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
7
6
|
|
|
8
7
|
require "n/utils/cache"
|
|
9
8
|
require "n/server/filter"
|
|
10
9
|
|
|
11
10
|
module N; module App
|
|
12
11
|
|
|
13
|
-
# =
|
|
12
|
+
# = Handler
|
|
13
|
+
#
|
|
14
|
+
# App server handlers handle requests to specific resources.
|
|
15
|
+
# Handlers are a special kinf of filters so the can be chained
|
|
16
|
+
# in the rendering pipeline.
|
|
14
17
|
#
|
|
15
18
|
# === Design:
|
|
16
19
|
#
|
|
17
|
-
# Handlers are NOT singleton classes. This way we can assign one
|
|
18
|
-
# class to multiple resources, and keep statistics and
|
|
19
|
-
# each resource.
|
|
20
|
+
# Handlers are NOT singleton classes. This way we can assign one
|
|
21
|
+
# handler class to multiple resources, and keep statistics and
|
|
22
|
+
# metrics for each resource.
|
|
20
23
|
#
|
|
21
24
|
class Handler < N::ServerFilter
|
|
25
|
+
|
|
26
|
+
# Perform the actual work of the handler
|
|
27
|
+
# Typically calls the next filter in the pipeline afterwards.
|
|
28
|
+
#
|
|
22
29
|
def process(request)
|
|
23
30
|
# nop
|
|
24
31
|
|
|
@@ -26,21 +33,19 @@ class Handler < N::ServerFilter
|
|
|
26
33
|
@next_filter.process(request) if @next_filter
|
|
27
34
|
end
|
|
28
35
|
|
|
29
|
-
#---------------------------------------------------------------------
|
|
30
|
-
# Testing/Metrics support methods
|
|
31
|
-
|
|
32
|
-
|
|
33
36
|
end # class
|
|
34
37
|
|
|
35
|
-
# Handler Error
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
+
# = Handler Error
|
|
39
|
+
#
|
|
40
|
+
# Raise this if an error happens when handling a request
|
|
41
|
+
#
|
|
38
42
|
class HandlerError < StandardError; end
|
|
39
43
|
|
|
40
44
|
# = Script Handler
|
|
41
45
|
#
|
|
42
|
-
# Base handler for scripts.
|
|
43
|
-
|
|
46
|
+
# Base handler for scripts. All othere script handlers are extensions
|
|
47
|
+
# from this class.
|
|
48
|
+
#
|
|
44
49
|
class ScriptHandler < Handler
|
|
45
50
|
|
|
46
51
|
# cache the compiled page scripts to optimize future references.
|
|
@@ -93,7 +98,8 @@ class ScriptHandler < Handler
|
|
|
93
98
|
return @@compiled_script_cache
|
|
94
99
|
end
|
|
95
100
|
|
|
96
|
-
# Log a rendering error
|
|
101
|
+
# Log a rendering error. The accumulated log is available
|
|
102
|
+
# for rendering in the offending page when in Debug mode.
|
|
97
103
|
#
|
|
98
104
|
def log_error(request, ex)
|
|
99
105
|
request.log_error "--------"
|
|
@@ -105,9 +111,10 @@ class ScriptHandler < Handler
|
|
|
105
111
|
|
|
106
112
|
end
|
|
107
113
|
|
|
108
|
-
#
|
|
109
|
-
#
|
|
110
|
-
|
|
114
|
+
# =ScriptHandlerError
|
|
115
|
+
#
|
|
116
|
+
# Raise this if an error happens when handling a script.
|
|
117
|
+
#
|
|
111
118
|
class ScriptHandlerError < HandlerError
|
|
112
119
|
attr_reader :error_line
|
|
113
120
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
# = Code handler (.sx scripts)
|
|
2
|
-
#
|
|
3
1
|
# code:
|
|
4
|
-
# George Moschovitis <gm@navel.gr>
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
5
3
|
#
|
|
6
4
|
# (c) 2004 Navel, all rights reserved.
|
|
7
|
-
# $Id: code-handler.rb
|
|
5
|
+
# $Id: code-handler.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
8
6
|
|
|
9
7
|
require "cgi"
|
|
10
8
|
require "singleton"
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
# = XML Page handler (.sx scripts)
|
|
2
|
-
#
|
|
3
1
|
# code:
|
|
4
|
-
# George Moschovitis <gm@navel.gr>
|
|
5
|
-
# Anastasios Koutoumanos <ak@navel.gr>
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
3
|
+
# * Anastasios Koutoumanos <ak@navel.gr>
|
|
6
4
|
#
|
|
7
5
|
# (c) 2004 Navel, all rights reserved.
|
|
8
|
-
# $Id: page-handler.rb
|
|
6
|
+
# $Id: page-handler.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
9
7
|
|
|
10
8
|
require "cgi"
|
|
11
9
|
require "singleton"
|
data/lib/n/app/request-part.rb
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
# = RequestPart
|
|
2
|
-
#
|
|
3
|
-
# Encapsulates a multipart part.
|
|
4
|
-
#
|
|
5
1
|
# code:
|
|
6
|
-
# George Moschovitis <gm@navel.gr>
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
7
3
|
#
|
|
8
4
|
# (c) 2004 Navel, all rights reserved.
|
|
9
|
-
# $Id: request-part.rb
|
|
5
|
+
# $Id: request-part.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
10
6
|
|
|
11
7
|
require "cgi"
|
|
12
8
|
require "ftools"
|
|
@@ -48,7 +44,6 @@ class RequestPart
|
|
|
48
44
|
# Hack fixed save for webrick!
|
|
49
45
|
#
|
|
50
46
|
def save(prefix, forced_filename = nil, forced_extension = nil)
|
|
51
|
-
# ARGH!! local path is used for something else, FIXME!!
|
|
52
47
|
::FileUtils.mkdir_p(prefix)
|
|
53
48
|
save_path = "#{prefix}/#{@filename}"
|
|
54
49
|
::File.open(save_path, "wb") {|f| f.write @body }
|
data/lib/n/app/request.rb
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Will use params with symbols for args. use uppercase for system
|
|
4
|
-
# 'args'.
|
|
5
|
-
#
|
|
6
|
-
# === INVESTIGATE:
|
|
7
|
-
# extend request from hash? to make more compatible with irb?
|
|
8
|
-
#
|
|
9
|
-
# code: gmosx, drak
|
|
1
|
+
# code:
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
10
3
|
#
|
|
11
4
|
# (c) 2004 Navel, all rights reserved.
|
|
12
|
-
# $Id: request.rb
|
|
5
|
+
# $Id: request.rb 101 2004-10-22 12:35:39Z gmosx $
|
|
13
6
|
|
|
14
7
|
require "cgi"
|
|
15
8
|
require "ftools"
|
|
@@ -108,16 +101,17 @@ end
|
|
|
108
101
|
|
|
109
102
|
# = Request
|
|
110
103
|
#
|
|
111
|
-
#
|
|
112
|
-
# the
|
|
113
|
-
#
|
|
114
|
-
# ===
|
|
104
|
+
# The context of an http protocol request. Encapsulates both
|
|
105
|
+
# the request and the response context.
|
|
106
|
+
#
|
|
107
|
+
# === Future:
|
|
115
108
|
#
|
|
116
109
|
# - USE libapreq!
|
|
117
110
|
# - Dont use env_table (arghhhh!)
|
|
118
111
|
# - dont use a separate path and real path
|
|
119
112
|
# - MEGA: unify request and request (like a socket, io
|
|
120
113
|
# stream,etc). Evan subclass IO!
|
|
114
|
+
# - extend request from hash? to make more compatible with irb?
|
|
121
115
|
#
|
|
122
116
|
# === Design:
|
|
123
117
|
#
|
|
@@ -142,7 +136,8 @@ end
|
|
|
142
136
|
# com/caucho/server/http/HttpRequest.java
|
|
143
137
|
# - use as much of ruby's default cgi/http code as
|
|
144
138
|
# possible (why reinvent the wheel?)
|
|
145
|
-
#
|
|
139
|
+
# Will use params with symbols for args. use uppercase for system
|
|
140
|
+
# 'args'.
|
|
146
141
|
#
|
|
147
142
|
class Request
|
|
148
143
|
# include usefull query parsing code from the standard
|
|
@@ -184,9 +179,12 @@ class Request
|
|
|
184
179
|
# The query string is parsed to the parameters
|
|
185
180
|
# hash.
|
|
186
181
|
attr_accessor :parameters
|
|
182
|
+
# alias for the parameters hash
|
|
187
183
|
alias_method :query, :parameters
|
|
184
|
+
# alias for the parameters hash
|
|
185
|
+
alias_method :params, :parameters
|
|
188
186
|
|
|
189
|
-
# the session this request is part-of
|
|
187
|
+
# the session this request is part-of.
|
|
190
188
|
attr_accessor :session
|
|
191
189
|
|
|
192
190
|
# The parts attached to this request.
|
|
@@ -195,7 +193,9 @@ class Request
|
|
|
195
193
|
# can easily enumerate parts.
|
|
196
194
|
attr_accessor :parts
|
|
197
195
|
|
|
198
|
-
#
|
|
196
|
+
# The level of the request (0 = toplevel). When the evaluating
|
|
197
|
+
# the sub-scripts that the top level script includes, the
|
|
198
|
+
# request level is incremented.
|
|
199
199
|
attr_accessor :level
|
|
200
200
|
|
|
201
201
|
# the remote address for this request
|
|
@@ -238,7 +238,7 @@ class Request
|
|
|
238
238
|
# the incoming cookies
|
|
239
239
|
attr_accessor :in_cookies
|
|
240
240
|
|
|
241
|
-
#
|
|
241
|
+
# response:
|
|
242
242
|
|
|
243
243
|
# the outgoing headers
|
|
244
244
|
attr_accessor :out
|
|
@@ -302,6 +302,7 @@ class Request
|
|
|
302
302
|
alias_method :parse_cookie_string, :parse_cookies
|
|
303
303
|
|
|
304
304
|
# === Input:
|
|
305
|
+
#
|
|
305
306
|
# the cookie name
|
|
306
307
|
#
|
|
307
308
|
# === Output:
|
|
@@ -331,12 +332,14 @@ class Request
|
|
|
331
332
|
#-------------------------------------------------------------------------------
|
|
332
333
|
# Query
|
|
333
334
|
|
|
335
|
+
# Parse the query string and populate the parameters hash.
|
|
336
|
+
#
|
|
334
337
|
def parse_query_string
|
|
335
338
|
return N::UriUtils.query_string_to_hash(@query_string)
|
|
336
339
|
end
|
|
337
340
|
|
|
338
341
|
# Return the value of a query parameter
|
|
339
|
-
|
|
342
|
+
#
|
|
340
343
|
def [](name)
|
|
341
344
|
return @parameters[name]
|
|
342
345
|
end
|
|
@@ -362,8 +365,9 @@ class Request
|
|
|
362
365
|
# Set the value of a query parameter
|
|
363
366
|
#
|
|
364
367
|
# === FIXME:
|
|
368
|
+
#
|
|
365
369
|
# - handle multivalued parameters!
|
|
366
|
-
|
|
370
|
+
#
|
|
367
371
|
def []=(name, value)
|
|
368
372
|
@parameters[name] = value
|
|
369
373
|
end
|
|
@@ -537,7 +541,8 @@ class Request
|
|
|
537
541
|
# --------------------------------------------------------------------
|
|
538
542
|
# Debugging helper
|
|
539
543
|
|
|
540
|
-
#
|
|
544
|
+
# Accumulate errors in a request log. This log can be presented
|
|
545
|
+
# in the offending page when running in debug mode.
|
|
541
546
|
#
|
|
542
547
|
def log_error(str)
|
|
543
548
|
@error_log = [] unless @error_log
|
|
@@ -546,7 +551,7 @@ class Request
|
|
|
546
551
|
end
|
|
547
552
|
|
|
548
553
|
# ====================================================================
|
|
549
|
-
#
|
|
554
|
+
# Response
|
|
550
555
|
|
|
551
556
|
# TODO: add status codes, messages
|
|
552
557
|
|
data/lib/n/app/script.rb
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# code:
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
2
3
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# A generalized fragment caching system is also defined.
|
|
6
|
-
#
|
|
7
|
-
# see handlers/page-handler::PageScript for more information.
|
|
8
|
-
#
|
|
9
|
-
# TODO:
|
|
10
|
-
# - convert all methods to __ to avoid collisions.
|
|
11
|
-
#
|
|
12
|
-
# code:
|
|
13
|
-
# George Moschovitis <gm@navel.gr>
|
|
14
|
-
#
|
|
15
|
-
# (c) 2003 Navel, all rights reserved.
|
|
16
|
-
# $Id: script.rb 71 2004-10-18 10:50:22Z gmosx $
|
|
4
|
+
# (c) 2004 Navel, all rights reserved.
|
|
5
|
+
# $Id: script.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
17
6
|
|
|
18
7
|
require "fileutils"
|
|
19
8
|
|
data/lib/n/app/server.rb
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# code:: gmosx
|
|
1
|
+
# code:
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
4
3
|
#
|
|
5
4
|
# (c) 2004 Navel, all rights reserved.
|
|
6
|
-
# $Id: server.rb
|
|
5
|
+
# $Id: server.rb 106 2004-10-25 11:31:11Z gmosx $
|
|
7
6
|
|
|
8
7
|
require "drb"
|
|
9
8
|
|
|
@@ -13,16 +12,19 @@ require "n/app/session"
|
|
|
13
12
|
|
|
14
13
|
module N; module App
|
|
15
14
|
|
|
16
|
-
# =
|
|
15
|
+
# = ServerMixin
|
|
16
|
+
#
|
|
17
|
+
# Usefull application server related methods.
|
|
17
18
|
#
|
|
18
19
|
module ServerMixin
|
|
19
20
|
|
|
20
21
|
def initialize_app
|
|
21
22
|
if $drb_state
|
|
22
|
-
# Cluster
|
|
23
|
+
# Cluster mode: use distributed Ruby objects.
|
|
23
24
|
$lm = N::Cluster::Slm.new($drb_lm_server, "druby://:8000")
|
|
24
25
|
$sessions = DRbObject.new(nil, $drb_sessions_cluster)
|
|
25
26
|
else
|
|
27
|
+
# NoCluster mode: use standard Ruby onjects.
|
|
26
28
|
$lm = N::SafeHash.new
|
|
27
29
|
$sessions = N::App::SessionManager.new
|
|
28
30
|
end
|
|
@@ -35,7 +37,7 @@ module ServerMixin
|
|
|
35
37
|
|
|
36
38
|
end
|
|
37
39
|
|
|
38
|
-
# =
|
|
40
|
+
# = Server
|
|
39
41
|
#
|
|
40
42
|
# The Application Server. Handles dynamic requests in a web application.
|
|
41
43
|
# Dont keepalive (or use a VERY SMALL keepalive). Typically this server
|
|
@@ -47,6 +49,8 @@ class Server < N::Server
|
|
|
47
49
|
def initialize(name = "AppServer")
|
|
48
50
|
super
|
|
49
51
|
initialize_app()
|
|
52
|
+
|
|
53
|
+
$log.info "Server listening at #$srv_url"
|
|
50
54
|
end
|
|
51
55
|
end
|
|
52
56
|
|
data/lib/n/app/session.rb
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
# = Session
|
|
2
|
-
#
|
|
3
|
-
#--
|
|
4
1
|
# code:
|
|
5
|
-
# George Moschovitis <gm@navel.gr>
|
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
|
6
3
|
#
|
|
7
4
|
# (c) 2002-2003 Navel, all rights reserved.
|
|
8
|
-
# $Id: session.rb
|
|
9
|
-
#++
|
|
5
|
+
# $Id: session.rb 99 2004-10-22 09:50:28Z gmosx $
|
|
10
6
|
|
|
11
7
|
require "md5"
|
|
12
8
|
|
|
@@ -17,7 +13,7 @@ module N; module App
|
|
|
17
13
|
|
|
18
14
|
# = SessionManager
|
|
19
15
|
#
|
|
20
|
-
# This object manages
|
|
16
|
+
# This object manages session objects. Several utility methods
|
|
21
17
|
# are also provided.
|
|
22
18
|
#
|
|
23
19
|
# === WARNING:
|
|
@@ -97,7 +93,7 @@ end
|
|
|
97
93
|
|
|
98
94
|
# = Session
|
|
99
95
|
#
|
|
100
|
-
# This object encapsulates a
|
|
96
|
+
# This object encapsulates a session.
|
|
101
97
|
#
|
|
102
98
|
# === Design:
|
|
103
99
|
#
|
|
@@ -124,7 +120,7 @@ class Session < Hash
|
|
|
124
120
|
# the last touch time
|
|
125
121
|
attr_accessor :touch_time
|
|
126
122
|
|
|
127
|
-
#
|
|
123
|
+
# Initializs the session.
|
|
128
124
|
#
|
|
129
125
|
def initialize(sid, request = nil)
|
|
130
126
|
super()
|
|
@@ -156,7 +152,7 @@ class Session < Hash
|
|
|
156
152
|
@user = N::AnonymousUser.instance
|
|
157
153
|
end
|
|
158
154
|
|
|
159
|
-
#
|
|
155
|
+
#
|
|
160
156
|
#
|
|
161
157
|
def touch
|
|
162
158
|
@touch_time = Time.now
|
|
@@ -207,7 +203,7 @@ class Session < Hash
|
|
|
207
203
|
|
|
208
204
|
# Initialize sessions garbage collection.
|
|
209
205
|
#
|
|
210
|
-
#
|
|
206
|
+
# WARNING: this is not used yet!
|
|
211
207
|
#
|
|
212
208
|
def self.initialize_gc(session_manager, interval)
|
|
213
209
|
# gmosx, FIXME: store this in a variable.
|