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.
- data/ChangeLog +186 -0
- data/README +40 -11
- data/RELEASES +10 -1
- data/Rakefile +5 -4
- data/bin/cluster.rb +3 -3
- data/{etc/new-project.rb → bin/new_app.rb} +1 -1
- data/examples/og/README +4 -0
- data/examples/og/run.rb +254 -0
- data/examples/simple/app.rb +3 -3
- data/examples/simple/conf/config.rb +10 -22
- data/examples/simple/conf/debug-config.rb +6 -32
- data/examples/simple/conf/live-config.rb +3 -23
- data/examples/simple/conf/requires.rb +5 -5
- data/examples/simple/env.rb +3 -4
- data/examples/simple/lib/articles/entities.rb +17 -15
- data/examples/simple/lib/articles/methods.rb +15 -15
- data/examples/simple/lib/articles/part.rb +7 -8
- data/examples/simple/root/comments.si +1 -1
- data/examples/simple/root/index.sx +1 -1
- data/examples/simple/root/view-article.sx +1 -2
- data/examples/tiny/app.rb +3 -3
- data/examples/tiny/conf/config.rb +4 -4
- data/examples/tiny/conf/requires.rb +3 -4
- data/lib/n/config.rb +50 -3
- data/lib/n/logger.rb +14 -2
- data/lib/n/og.rb +381 -0
- data/lib/n/og/backend.rb +252 -0
- data/lib/n/og/backends/mysql.rb +352 -0
- data/lib/n/og/backends/psql.rb +351 -0
- data/lib/n/og/connection.rb +253 -0
- data/lib/n/og/meta.rb +127 -0
- data/lib/n/properties.rb +6 -6
- data/lib/n/server.rb +4 -7
- data/lib/n/server/appserver.rb +58 -0
- data/lib/n/{app → server}/cluster.rb +3 -3
- data/lib/n/{app → server}/cookie.rb +3 -3
- data/lib/n/server/dispatcher.rb +55 -0
- data/lib/n/server/{filter.rb → filters.rb} +1 -1
- data/lib/n/{app → server}/filters/autologin.rb +5 -5
- data/lib/n/{app → server}/fragment.rb +3 -3
- data/lib/n/{app → server}/handlers.rb +4 -4
- data/lib/n/{app → server}/handlers/code-handler.rb +6 -6
- data/lib/n/{app → server}/handlers/page-handler.rb +9 -7
- data/lib/n/{app → server}/request.rb +8 -8
- data/lib/n/{app/request-part.rb → server/requestpart.rb} +4 -4
- data/lib/n/{app → server}/script.rb +5 -5
- data/lib/n/{app → server}/server.rb +1 -1
- data/lib/n/{app → server}/session.rb +5 -5
- data/lib/n/{app → server}/user.rb +1 -1
- data/lib/n/{app/webrick-servlet.rb → server/webrick.rb} +77 -20
- data/lib/n/shaders.rb +3 -2
- data/lib/n/std.rb +5 -32
- data/test/n/{app → server}/tc_cookie.rb +2 -2
- data/test/n/server/tc_filters.rb +38 -0
- data/test/n/{app → server}/tc_request.rb +6 -6
- data/test/n/{app → server}/tc_requestpart.rb +3 -3
- data/test/n/{app → server}/tc_session.rb +2 -2
- data/test/n/tc_og.rb +178 -0
- data/test/n/ui/tc_pager.rb +3 -3
- metadata +41 -65
- data/examples/ndb/README +0 -5
- data/examples/ndb/run.rb +0 -271
- data/lib/n/app/webrick.rb +0 -73
- data/lib/n/db.rb +0 -233
- data/lib/n/db/README +0 -232
- data/lib/n/db/connection.rb +0 -365
- data/lib/n/db/managed.rb +0 -233
- data/lib/n/db/mixins.rb +0 -279
- data/lib/n/db/mysql.rb +0 -345
- data/lib/n/db/psql.rb +0 -383
- data/lib/n/db/tools.rb +0 -106
- data/lib/n/db/utils.rb +0 -102
- data/lib/n/server/PLAYBACK.txt +0 -8
- data/lib/n/server/RESEARCH.txt +0 -13
- data/test/n/tc_db.rb +0 -223
- data/test/n/tc_db_mysql.rb +0 -241
data/test/n/tc_db_mysql.rb
DELETED
@@ -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
|