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
@@ -1,241 +0,0 @@
1
- require "test/unit"
2
-
3
- require "n/logger"; $log = Logger.new(STDERR) unless $log
4
-
5
- require "n/db"
6
-
7
- module Test # :nodoc: all
8
-
9
- class Article
10
- manage {
11
- include N::Entity
12
-
13
- prop_accessor String, :title, :body
14
- }
15
-
16
- def self.__descendants_classes
17
- [Message]
18
- end
19
- end
20
-
21
- class Message
22
- manage {
23
- include N::Entity
24
- include N::Named
25
- include N::Child
26
- include N::ParentClass
27
-
28
- include N::Sequenced
29
-
30
- prop_accessor Fixnum, :owner_oid
31
- prop_accessor Fixnum, "smallint", :val1, :val2, :val3
32
- prop_accessor String, :title, :body
33
- prop_accessor String, "text NOT NULL", :test
34
- prop_accessor Fixnum, :count
35
- prop_accessor Time, :create_time
36
- sql_index :owner_oid, :pid
37
- }
38
-
39
- def initialize
40
- @create_time = Time.now
41
- end
42
-
43
- end
44
-
45
- class SubMessage < Message
46
- manage {
47
- # duplicate definition
48
- prop_accessor Float, :count
49
- }
50
- end
51
-
52
- class TC_N_Db < Test::Unit::TestCase
53
-
54
- def setup
55
- $db = N::Db.new(
56
- :backend => "mysql",
57
- :address => "localhost",
58
- :database => "test",
59
- :user => "root",
60
- :password => "navelrulez",
61
- :connection_count => 2
62
- )
63
-
64
- @art = Article.new()
65
- @art.title = "The parent"
66
- @art.body = "The body"
67
-
68
- @msg1 = Message.new()
69
- @msg1.name = "name1"
70
- @msg1.body = "body1"
71
- @msg1.title = "title1"
72
- @msg1.count = "22"
73
- @msg1.owner_oid = 1
74
-
75
- @msg2 = Message.new()
76
- @msg2.name = "name2"
77
- @msg2.body = "body2"
78
- @msg2.title = "title2"
79
- @msg2.count = "22"
80
- @msg1.owner_oid = 2
81
- end
82
-
83
- def teardown
84
- @art = @msg1 = @msg2 = nil
85
- $db.shutdown()
86
- end
87
-
88
- # gmosx: move to tc-properties
89
- #
90
- def test_props
91
-
92
- # check multiple prop
93
-
94
- assert_equal("SMALLINT", Message.__props.find { |p| :val2 == p.symbol }.sql_type)
95
-
96
- # bug: props for subclasses.
97
-
98
- assert(SubMessage.__props)
99
- assert_equal(Message.__props.size(), SubMessage.__props.size())
100
-
101
- # bug: duplicate definition
102
-
103
- assert_equal(Float, SubMessage.__props.find { |p| :count == p.symbol }.klass)
104
-
105
- # dont force conversion
106
-
107
- @msg1.count = 2.4
108
- assert_equal(Float, @msg1.count.class)
109
-
110
- # force conversion
111
-
112
- @msg1.__force_count__(2.4)
113
- assert_equal(Fixnum, @msg1.count.class)
114
- end
115
-
116
- # gmosx: hmm, implemented in one method to enforce order.
117
- #
118
- def test_all
119
- $db.open { |db|
120
-
121
- # check exception, cleanup test db.
122
-
123
- # db.drop_schema()
124
- db.drop_table(Article)
125
- db.drop_table(Message)
126
-
127
- # db.create_schema()
128
-
129
- # bug: get methods without entity table
130
-
131
- db.get(1, Message)
132
-
133
- # check put
134
-
135
- db << @art
136
- # one oid is missed when creating the table for the first time!
137
- assert_equal(1, @art.oid)
138
-
139
- art2 = Article.new()
140
- art2.title = "Another test"
141
- db << art2
142
-
143
- @msg1.set_parent(@art)
144
- @msg2.set_parent(@art)
145
-
146
- db << @msg1
147
- db << @msg2
148
-
149
- $log.error "#{@msg2.oid}"
150
- assert_equal(2, @msg2.oid)
151
-
152
- # check children.
153
-
154
- msgs = db.children(@art, Message, "ORDER BY count")
155
- assert_equal(2, msgs.size())
156
- assert_equal(Message, msgs[0].class)
157
-
158
- assert_equal(2, db.count_children(@art, Message))
159
-
160
- # bug: pid was string
161
-
162
- assert_equal(@art.oid, msgs[0].pid)
163
-
164
- # check updates
165
-
166
- @art.title = "CHANGED TITLE"
167
- db.update_properties("title='#{@art.title}'", @art)
168
-
169
- art2 = db.get(@art.oid, Article)
170
-
171
- assert_equal(art2.title, @art.title)
172
-
173
- @art.body = "CHANGED BODY"
174
- @art.title = "CHANGED AGAIN"
175
- db << @art
176
-
177
- art2 = db.get(@art.oid, Article)
178
- assert_equal(art2.body, @art.body)
179
- assert_equal(art2.title, "CHANGED AGAIN")
180
-
181
- # check timestamp
182
-
183
- now = Time.now()
184
- @msg1.create_time = now
185
- db << @msg1
186
-
187
- msg = db.get(@msg1.oid, Message)
188
-
189
- # bug:
190
- # assert_equal(msg.create_time, @msg1.create_time)
191
- assert_equal(msg.create_time.to_i(), @msg1.create_time.to_i())
192
-
193
- # gmosx: not implemented in postgres driver.
194
- # classes = db.managed_classes()
195
- # assert_equal(2, classes.size())
196
-
197
- # get_by_name
198
-
199
- msg = db.get_by_name("name2", Message)
200
- assert_equal("body2", msg.body)
201
-
202
- # pclass
203
-
204
- assert_equal(@art.class.to_s(), msg.pclass)
205
-
206
- }
207
-
208
- # deserialize = false
209
-
210
- $db.open(deserialize = false) { |db|
211
-
212
- assert_equal(false, db.deserialize)
213
-
214
- msg = db.get_by_name("name2", Message)
215
- assert_equal(Array, msg.class)
216
-
217
- art = db.get(2, Article)
218
- assert_equal(Array, art.class)
219
-
220
- }
221
-
222
- # cascade delete
223
-
224
- msgs = $db.children(0, Message)
225
- assert_equal(2, msgs.size())
226
-
227
- $db.delete(@art)
228
-
229
- msgs = $db.children(0, Message)
230
- assert_equal(nil, msgs)
231
-
232
- end
233
-
234
- def test_sql_table_to_class
235
- # assert_equal(Article,
236
- # N::DbUtils.sql_table_to_class(N::DbUtils.sql_table(Article)))
237
- end
238
-
239
- end
240
-
241
- end