nitro 0.2.0 → 0.3.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 (76) hide show
  1. data/ChangeLog +186 -0
  2. data/README +40 -11
  3. data/RELEASES +10 -1
  4. data/Rakefile +5 -4
  5. data/bin/cluster.rb +3 -3
  6. data/{etc/new-project.rb → bin/new_app.rb} +1 -1
  7. data/examples/og/README +4 -0
  8. data/examples/og/run.rb +254 -0
  9. data/examples/simple/app.rb +3 -3
  10. data/examples/simple/conf/config.rb +10 -22
  11. data/examples/simple/conf/debug-config.rb +6 -32
  12. data/examples/simple/conf/live-config.rb +3 -23
  13. data/examples/simple/conf/requires.rb +5 -5
  14. data/examples/simple/env.rb +3 -4
  15. data/examples/simple/lib/articles/entities.rb +17 -15
  16. data/examples/simple/lib/articles/methods.rb +15 -15
  17. data/examples/simple/lib/articles/part.rb +7 -8
  18. data/examples/simple/root/comments.si +1 -1
  19. data/examples/simple/root/index.sx +1 -1
  20. data/examples/simple/root/view-article.sx +1 -2
  21. data/examples/tiny/app.rb +3 -3
  22. data/examples/tiny/conf/config.rb +4 -4
  23. data/examples/tiny/conf/requires.rb +3 -4
  24. data/lib/n/config.rb +50 -3
  25. data/lib/n/logger.rb +14 -2
  26. data/lib/n/og.rb +381 -0
  27. data/lib/n/og/backend.rb +252 -0
  28. data/lib/n/og/backends/mysql.rb +352 -0
  29. data/lib/n/og/backends/psql.rb +351 -0
  30. data/lib/n/og/connection.rb +253 -0
  31. data/lib/n/og/meta.rb +127 -0
  32. data/lib/n/properties.rb +6 -6
  33. data/lib/n/server.rb +4 -7
  34. data/lib/n/server/appserver.rb +58 -0
  35. data/lib/n/{app → server}/cluster.rb +3 -3
  36. data/lib/n/{app → server}/cookie.rb +3 -3
  37. data/lib/n/server/dispatcher.rb +55 -0
  38. data/lib/n/server/{filter.rb → filters.rb} +1 -1
  39. data/lib/n/{app → server}/filters/autologin.rb +5 -5
  40. data/lib/n/{app → server}/fragment.rb +3 -3
  41. data/lib/n/{app → server}/handlers.rb +4 -4
  42. data/lib/n/{app → server}/handlers/code-handler.rb +6 -6
  43. data/lib/n/{app → server}/handlers/page-handler.rb +9 -7
  44. data/lib/n/{app → server}/request.rb +8 -8
  45. data/lib/n/{app/request-part.rb → server/requestpart.rb} +4 -4
  46. data/lib/n/{app → server}/script.rb +5 -5
  47. data/lib/n/{app → server}/server.rb +1 -1
  48. data/lib/n/{app → server}/session.rb +5 -5
  49. data/lib/n/{app → server}/user.rb +1 -1
  50. data/lib/n/{app/webrick-servlet.rb → server/webrick.rb} +77 -20
  51. data/lib/n/shaders.rb +3 -2
  52. data/lib/n/std.rb +5 -32
  53. data/test/n/{app → server}/tc_cookie.rb +2 -2
  54. data/test/n/server/tc_filters.rb +38 -0
  55. data/test/n/{app → server}/tc_request.rb +6 -6
  56. data/test/n/{app → server}/tc_requestpart.rb +3 -3
  57. data/test/n/{app → server}/tc_session.rb +2 -2
  58. data/test/n/tc_og.rb +178 -0
  59. data/test/n/ui/tc_pager.rb +3 -3
  60. metadata +41 -65
  61. data/examples/ndb/README +0 -5
  62. data/examples/ndb/run.rb +0 -271
  63. data/lib/n/app/webrick.rb +0 -73
  64. data/lib/n/db.rb +0 -233
  65. data/lib/n/db/README +0 -232
  66. data/lib/n/db/connection.rb +0 -365
  67. data/lib/n/db/managed.rb +0 -233
  68. data/lib/n/db/mixins.rb +0 -279
  69. data/lib/n/db/mysql.rb +0 -345
  70. data/lib/n/db/psql.rb +0 -383
  71. data/lib/n/db/tools.rb +0 -106
  72. data/lib/n/db/utils.rb +0 -102
  73. data/lib/n/server/PLAYBACK.txt +0 -8
  74. data/lib/n/server/RESEARCH.txt +0 -13
  75. data/test/n/tc_db.rb +0 -223
  76. data/test/n/tc_db_mysql.rb +0 -241
@@ -2,9 +2,9 @@
2
2
 
3
3
  require "test/unit"
4
4
 
5
- require "n/app/cookie"
5
+ require "n/server/cookie"
6
6
 
7
- include N::App
7
+ include N
8
8
 
9
9
 
10
10
  class TC_Cookie < Test::Unit::TestCase
@@ -0,0 +1,38 @@
1
+ require "test/unit"
2
+
3
+ require "n/server/filters"
4
+
5
+ class Filter1 < N::ServerFilter
6
+ # :nodoc: all
7
+ def process(request)
8
+ return "filter1:#{process_next(request)}"
9
+ end
10
+ end
11
+
12
+ class Filter2 < ServerFilter
13
+ # :nodoc: all
14
+ def process(request)
15
+ return "filter2:#{process_next(request)}"
16
+ end
17
+ end
18
+
19
+ class TC_Server_Filter < Test::Unit::TestCase
20
+ # :nodoc: all
21
+
22
+ def setup
23
+ @filter = Filter1.new(Filter2.new)
24
+ end
25
+
26
+ def teardown
27
+ @filter = nil
28
+ end
29
+
30
+ def test_process_next
31
+ @filter = Filter1.new
32
+ assert_equal("filter1:", @filter.process(nil))
33
+
34
+ @filter = Filter1.new(Filter2.new)
35
+ assert_equal("filter1:filter2:", @filter.process(nil))
36
+ end
37
+
38
+ end
@@ -4,10 +4,10 @@ require "test/unit"
4
4
 
5
5
  require "n/logger"; $log = Logger.new(STDERR) unless $log
6
6
 
7
- require "n/app/cookie"
8
- require "n/app/request"
7
+ require "n/server/cookie"
8
+ require "n/server/request"
9
9
 
10
- include N::App
10
+ include N
11
11
 
12
12
  class TC_Request < Test::Unit::TestCase
13
13
  # :nodoc: all
@@ -19,7 +19,7 @@ class TC_Request < Test::Unit::TestCase
19
19
  end
20
20
  =begin
21
21
  def test_parse
22
- request = N::App::Request.new
22
+ request = N::Request.new
23
23
 
24
24
  request.parse_cookies("nsid=293230807; nauth=gmosx:meMXs0ifW7JBQ; koko=123&345")
25
25
 
@@ -38,7 +38,7 @@ class TC_Request < Test::Unit::TestCase
38
38
  =end
39
39
  def test_get_cookie
40
40
  # bug: call get_cookie w/o cookies.
41
- request = N::App::Request.new
41
+ request = N::Request.new
42
42
  request.in_cookies = nil
43
43
  assert_nothing_raised {
44
44
  request.get_cookie("test")
@@ -46,7 +46,7 @@ class TC_Request < Test::Unit::TestCase
46
46
  end
47
47
 
48
48
  def test_tx
49
- request = N::App::Request.new
49
+ request = N::Request.new
50
50
  request.session = {}
51
51
  request.parameters = {}
52
52
 
@@ -2,10 +2,10 @@
2
2
 
3
3
  require "test/unit"
4
4
 
5
- require "n/app/cookie"
6
- require "n/app/request"
5
+ require "n/server/cookie"
6
+ require "n/server/request"
7
7
 
8
- include N::App
8
+ include N
9
9
 
10
10
  class TC_N2_Web_Server_RequestPart < Test::Unit::TestCase # :nodoc: all
11
11
  # :nodoc: all
@@ -2,9 +2,9 @@
2
2
 
3
3
  require "test/unit"
4
4
 
5
- require "n/app/session"
5
+ require "n/server/session"
6
6
 
7
- include N::App
7
+ include N
8
8
 
9
9
  class TC_N2_Web_Server_Session < Test::Unit::TestCase
10
10
  # :nodoc: all
data/test/n/tc_og.rb ADDED
@@ -0,0 +1,178 @@
1
+ require "test/unit"
2
+
3
+ require "n/logger"; $log = Logger.new(STDERR) unless $log
4
+ require "n/og"
5
+
6
+ module Test # :nodoc: all
7
+
8
+ # bug: creates a table that fucksup postgres if not
9
+ # correctly escaped.
10
+ class User
11
+ prop_accessor String, :name
12
+
13
+ def initialize(name = nil)
14
+ @name = name
15
+ end
16
+ end
17
+
18
+ class Comment; end
19
+
20
+ class Article
21
+ has_many Test::Comment, :comments
22
+ prop_accessor String, :title
23
+ prop_accessor String, :body
24
+ prop_accessor Hash, :options
25
+
26
+ def initialize(title = nil, body = nil)
27
+ @title = title
28
+ @body = body
29
+ @options = {"hello" => "world"}
30
+ end
31
+
32
+ def og_pre_insert(conn)
33
+ puts "-- PRE INSERT CALLED FOR ARTICLE"
34
+ end
35
+
36
+ def og_post_insert_update(conn)
37
+ puts "-- POST INSERT UPDATE CALLED FOR ARTICLE"
38
+ end
39
+
40
+ def og_post_update(conn)
41
+ puts "-- POST UPDATE CALLED FOR ARTICLE"
42
+ end
43
+ end
44
+
45
+ class Comment
46
+ belongs_to Test::Article, :article
47
+ belongs_to Test::User, :author
48
+ prop_accessor String, :body
49
+ prop_accessor Time, :create_time
50
+
51
+ def initialize(body = nil)
52
+ @create_time = Time.now
53
+ @body = body
54
+ end
55
+
56
+ def og_pre_insert(conn)
57
+ puts "-- PRE INSERT CALLED FOR COMMENT"
58
+ end
59
+
60
+ def og_post_insert(conn)
61
+ puts "-- POST INSERT CALLED FOR COMMENT"
62
+ end
63
+ end
64
+
65
+ class TC_N_OG < Test::Unit::TestCase
66
+
67
+ def setup
68
+ psql = true
69
+
70
+ if psql
71
+ config = {
72
+ :backend => "psql",
73
+ :address => "localhost",
74
+ :database => "test",
75
+ :user => "postgres",
76
+ :password => "navelrulez",
77
+ :connection_count => 1
78
+ }
79
+ else
80
+ config = {
81
+ :backend => "mysql",
82
+ :address => "localhost",
83
+ :database => "test",
84
+ :user => "root",
85
+ :password => "navelrulez",
86
+ :connection_count => 1
87
+ }
88
+ end
89
+
90
+ N::Og.drop_db!(config)
91
+ $og = N::Og.new(config)
92
+ end
93
+
94
+ def teardown
95
+ $og.shutdown()
96
+ end
97
+
98
+ # gmosx: hmm, implemented in one method to enforce order.
99
+ #
100
+ def test_all
101
+ $DBG = true
102
+
103
+ $og.get_connection()
104
+
105
+ $og.manage_classes(Article, Comment, User)
106
+
107
+ article = Article.new("Title", "Here comes the body")
108
+ $og << article
109
+
110
+ article.title = "Changed"
111
+ article.save!
112
+
113
+ $og.pupdate("body='Hello'", article)
114
+
115
+ article.pupdate! "body='Hello'"
116
+
117
+ another = Article[1]
118
+ assert_equal(1, another.oid)
119
+ # bug: yaml load problem.
120
+ assert_equal("world", another.options["hello"])
121
+
122
+ # bug: YAMLing nil property
123
+ another.options = nil
124
+ another.save!
125
+
126
+ assert_equal(nil, $og.load(30000, Article))
127
+
128
+ articles = $og.load_all(Article)
129
+
130
+ # p articles
131
+ # p Article[23]
132
+
133
+ user = User.new("gmosx")
134
+ user.save!
135
+
136
+ another = User["gmosx"]
137
+
138
+ assert_equal("gmosx", another.name)
139
+
140
+ users1 = $og.select("name='gmosx' ORDER BY oid", User)
141
+
142
+ users = $og.select("SELECT * FROM #{User::DBTABLE} WHERE name='gmosx' ORDER BY oid", User)
143
+
144
+ users2 = User.select "name='gmosx' ORDER BY oid"
145
+
146
+ assert_equal(users1.size, users2.size)
147
+
148
+ article = Article.new("Title", "Body")
149
+ article.save!
150
+
151
+ comment = Comment.new("This is a comment")
152
+ comment.article = article
153
+ comment.author = User["gmosx"]
154
+ comment.save!
155
+
156
+ comment = Comment.new("This is another comment")
157
+ comment.article = article.oid
158
+ comment.author = User["gmosx"]
159
+ comment.save!
160
+
161
+ assert_equal(article.oid, comment.article_oid)
162
+
163
+ comments = article.comments
164
+
165
+ assert_equal(2, comments.size)
166
+
167
+ assert_equal("gmosx", comments[0].author.name)
168
+
169
+ Article.delete(article)
170
+
171
+ assert_equal(nil, Comment.all)
172
+
173
+ comment.delete!
174
+ end
175
+
176
+ end
177
+
178
+ end
@@ -4,7 +4,7 @@ require "test/unit"
4
4
 
5
5
  require "n/logger"; $log = Logger.new(STDERR) unless $log
6
6
 
7
- require "n/db"
7
+ require "n/og"
8
8
  require "n/ui/pager"
9
9
 
10
10
  class RequestMock < Hash
@@ -17,7 +17,7 @@ class TC_N_UI_Pager < Test::Unit::TestCase
17
17
 
18
18
  def setup
19
19
  =begin
20
- $db = N::Db.new(
20
+ $og = N::Og.new(
21
21
  :addres => "localhost",
22
22
  :database => "testdb",
23
23
  :user => "root",
@@ -28,7 +28,7 @@ class TC_N_UI_Pager < Test::Unit::TestCase
28
28
  end
29
29
 
30
30
  def teardown
31
- # $db.shutdown()
31
+ # $og.shutdown()
32
32
  end
33
33
 
34
34
  def test_all
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.1
3
3
  specification_version: 1
4
4
  name: nitro
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2004-10-25
6
+ version: 0.3.0
7
+ date: 2004-11-01
8
8
  summary: Web Engine
9
9
  require_paths:
10
10
  - lib
@@ -33,10 +33,10 @@ files:
33
33
  - ChangeLog
34
34
  - Rakefile
35
35
  - bin/cluster.rb
36
- - etc/new-project.rb
36
+ - bin/new_app.rb
37
37
  - examples/tiny
38
+ - examples/og
38
39
  - examples/simple
39
- - examples/ndb
40
40
  - examples/tiny/conf
41
41
  - examples/tiny/app.rb
42
42
  - examples/tiny/logs
@@ -46,6 +46,8 @@ files:
46
46
  - examples/tiny/conf/requires.rb
47
47
  - examples/tiny/conf/config.rb
48
48
  - examples/tiny/root/index.sx
49
+ - examples/og/run.rb
50
+ - examples/og/README
49
51
  - examples/simple/conf
50
52
  - examples/simple/app.rb
51
53
  - examples/simple/install.rb
@@ -75,21 +77,18 @@ files:
75
77
  - examples/simple/lib/articles/part.rb
76
78
  - examples/simple/lib/articles/entities.rb
77
79
  - examples/simple/lib/articles/methods.rb
78
- - examples/ndb/run.rb
79
- - examples/ndb/README
80
80
  - doc/bugs.txt
81
81
  - doc/architecture.txt
82
82
  - lib/n
83
83
  - lib/xsl
84
84
  - lib/p
85
- - lib/n/app
86
85
  - lib/n/sitemap.rb
87
86
  - lib/n/properties.rb
88
87
  - lib/n/parts.rb
89
88
  - lib/n/utils
90
- - lib/n/db
91
89
  - lib/n/macros.rb
92
90
  - lib/n/shaders.rb
91
+ - lib/n/og
93
92
  - lib/n/sync
94
93
  - lib/n/server.rb
95
94
  - lib/n/server
@@ -98,27 +97,10 @@ files:
98
97
  - lib/n/l10n.rb
99
98
  - lib/n/ui
100
99
  - lib/n/application.rb
100
+ - lib/n/og.rb
101
101
  - lib/n/config.rb
102
102
  - lib/n/logger.rb
103
103
  - lib/n/std.rb
104
- - lib/n/db.rb
105
- - lib/n/app/filters
106
- - lib/n/app/session.rb
107
- - lib/n/app/handlers
108
- - lib/n/app/request.rb
109
- - lib/n/app/fragment.rb
110
- - lib/n/app/script.rb
111
- - lib/n/app/webrick-servlet.rb
112
- - lib/n/app/server.rb
113
- - lib/n/app/cluster.rb
114
- - lib/n/app/cookie.rb
115
- - lib/n/app/user.rb
116
- - lib/n/app/request-part.rb
117
- - lib/n/app/handlers.rb
118
- - lib/n/app/webrick.rb
119
- - lib/n/app/filters/autologin.rb
120
- - lib/n/app/handlers/page-handler.rb
121
- - lib/n/app/handlers/code-handler.rb
122
104
  - lib/n/utils/pool.rb
123
105
  - lib/n/utils/time.rb
124
106
  - lib/n/utils/mail.rb
@@ -132,20 +114,34 @@ files:
132
114
  - lib/n/utils/string.rb
133
115
  - lib/n/utils/http.rb
134
116
  - lib/n/utils/hash.rb
135
- - lib/n/db/tools.rb
136
- - lib/n/db/connection.rb
137
- - lib/n/db/psql.rb
138
- - lib/n/db/mysql.rb
139
- - lib/n/db/managed.rb
140
- - lib/n/db/utils.rb
141
- - lib/n/db/mixins.rb
142
- - lib/n/db/README
117
+ - lib/n/og/backends
118
+ - lib/n/og/connection.rb
119
+ - lib/n/og/backend.rb
120
+ - lib/n/og/meta.rb
121
+ - lib/n/og/backends/psql.rb
122
+ - lib/n/og/backends/mysql.rb
143
123
  - lib/n/sync/handler.rb
144
124
  - lib/n/sync/server.rb
145
125
  - lib/n/sync/clc.rb
146
- - lib/n/server/RESEARCH.txt
147
- - lib/n/server/PLAYBACK.txt
148
- - lib/n/server/filter.rb
126
+ - lib/n/server/filters
127
+ - lib/n/server/session.rb
128
+ - lib/n/server/handlers
129
+ - lib/n/server/request.rb
130
+ - lib/n/server/requestpart.rb
131
+ - lib/n/server/appserver.rb
132
+ - lib/n/server/fragment.rb
133
+ - lib/n/server/dispatcher.rb
134
+ - lib/n/server/script.rb
135
+ - lib/n/server/filters.rb
136
+ - lib/n/server/server.rb
137
+ - lib/n/server/cluster.rb
138
+ - lib/n/server/cookie.rb
139
+ - lib/n/server/user.rb
140
+ - lib/n/server/handlers.rb
141
+ - lib/n/server/webrick.rb
142
+ - lib/n/server/filters/autologin.rb
143
+ - lib/n/server/handlers/page-handler.rb
144
+ - lib/n/server/handlers/code-handler.rb
149
145
  - lib/n/ui/popup.rb
150
146
  - lib/n/ui/select.rb
151
147
  - lib/n/ui/date-select.rb
@@ -155,18 +151,13 @@ files:
155
151
  - lib/xsl/base.xsl
156
152
  - lib/p/README
157
153
  - test/n
158
- - test/n/app
159
- - test/n/tc_db.rb
160
154
  - test/n/utils
155
+ - test/n/tc_og.rb
161
156
  - test/n/tc_sitemap.rb
157
+ - test/n/server
162
158
  - test/n/tc_events.rb
163
159
  - test/n/ui
164
- - test/n/tc_db_mysql.rb
165
160
  - test/n/tc_properties.rb
166
- - test/n/app/tc_requestpart.rb
167
- - test/n/app/tc_cookie.rb
168
- - test/n/app/tc_session.rb
169
- - test/n/app/tc_request.rb
170
161
  - test/n/utils/tc_cache.rb
171
162
  - test/n/utils/tc_hash.rb
172
163
  - test/n/utils/tc_http.rb
@@ -174,6 +165,11 @@ files:
174
165
  - test/n/utils/tc_html.rb
175
166
  - test/n/utils/tc_uri.rb
176
167
  - test/n/utils/tc_number.rb
168
+ - test/n/server/tc_filters.rb
169
+ - test/n/server/tc_requestpart.rb
170
+ - test/n/server/tc_cookie.rb
171
+ - test/n/server/tc_session.rb
172
+ - test/n/server/tc_request.rb
177
173
  - test/n/ui/tc_pager.rb
178
174
  test_files: []
179
175
  rdoc_options:
@@ -191,24 +187,4 @@ extra_rdoc_files:
191
187
  executables: []
192
188
  extensions: []
193
189
  requirements: []
194
- dependencies:
195
- - !ruby/object:Gem::Dependency
196
- name: postgres
197
- version_requirement:
198
- version_requirements: !ruby/object:Gem::Version::Requirement
199
- requirements:
200
- -
201
- - ">="
202
- - !ruby/object:Gem::Version
203
- version: 0.7.1
204
- version:
205
- - !ruby/object:Gem::Dependency
206
- name: extensions
207
- version_requirement:
208
- version_requirements: !ruby/object:Gem::Version::Requirement
209
- requirements:
210
- -
211
- - ">="
212
- - !ruby/object:Gem::Version
213
- version: "0.5"
214
- version:
190
+ dependencies: []