nitro 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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