nitro 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +117 -0
- data/INSTALL +4 -0
- data/README +30 -31
- data/Rakefile +2 -2
- data/bin/nitro +10 -1
- data/bin/{new_app.rb → nitrogen} +12 -22
- data/doc/AUTHORS +4 -13
- data/doc/RELEASES +98 -0
- data/examples/ajax/run.rb +1 -3
- data/examples/blog/cache/entriesadmin +1 -1
- data/examples/blog/conf/locales/de.yml +4 -0
- data/examples/blog/conf/locales/en.yml +4 -0
- data/examples/blog/public/fcgi.rb +2 -3
- data/examples/blog/run.rb +10 -5
- data/examples/blog/src/controller.rb +21 -10
- data/examples/blog/src/mailer.rb +1 -1
- data/examples/blog/src/views/index.xhtml +2 -2
- data/examples/blog/src/xsl/style.xsl +6 -1
- data/examples/flash/run.rb +1 -3
- data/examples/no_xsl_blog/conf/locales/de.yml +4 -0
- data/examples/no_xsl_blog/conf/locales/en.yml +4 -0
- data/examples/no_xsl_blog/lib/blog/controller.rb +10 -0
- data/examples/no_xsl_blog/lib/blog/template.rb +4 -0
- data/examples/no_xsl_blog/public/fcgi.rb +2 -1
- data/examples/no_xsl_blog/public/index.xhtml +1 -1
- data/examples/no_xsl_blog/run.rb +8 -4
- data/examples/tiny/public/deep/dir/hello.xhtml +1 -0
- data/examples/tiny/public/fcgi.rb +2 -1
- data/examples/tiny/public/index.xhtml +5 -2
- data/examples/tiny/run.rb +1 -3
- data/examples/wee_style/run.rb +1 -3
- data/examples/why_wiki/run.rb +1 -3
- data/lib/nitro.rb +5 -2
- data/lib/nitro/builders/form.rb +8 -3
- data/lib/nitro/caching/stores.rb +3 -3
- data/lib/nitro/controller.rb +26 -6
- data/lib/nitro/dispatcher.rb +21 -13
- data/lib/nitro/environment.rb +23 -0
- data/lib/nitro/filters.rb +10 -8
- data/lib/nitro/localization.rb +127 -13
- data/lib/nitro/part.rb +24 -0
- data/lib/nitro/render.rb +19 -15
- data/lib/nitro/runner.rb +2 -1
- data/lib/nitro/scaffold.rb +69 -17
- data/lib/nitro/shaders.rb +54 -83
- data/lib/nitro/template.rb +7 -1
- data/proto/README +11 -0
- data/proto/conf/apache.conf +51 -0
- data/proto/conf/lhttpd.conf +107 -0
- data/proto/public/error.xhtml +56 -0
- data/proto/public/fcgi.rb +5 -0
- data/proto/public/index.xhtml +83 -0
- data/proto/public/js/ajax.js +63 -0
- data/proto/public/media/nitro.png +0 -0
- data/proto/run.rb +11 -0
- data/test/nitro/tc_controller.rb +1 -4
- data/test/nitro/tc_dispatcher.rb +8 -0
- data/test/nitro/tc_localization.rb +49 -0
- metadata +34 -6
- data/bin/new_form.rb +0 -54
data/CHANGELOG
CHANGED
@@ -1,5 +1,122 @@
|
|
1
|
+
04-04-2005 George Moschovitis <gm@navel.gr>
|
2
|
+
|
3
|
+
* bin/nitro: fix
|
4
|
+
|
5
|
+
* bin/nitrogen: fix
|
6
|
+
|
7
|
+
* --- VERSION 0.15.0 ---
|
8
|
+
|
9
|
+
* Rakefile: added nitrogen executable.
|
10
|
+
|
11
|
+
* examples/blog/public/fcgi.rb: fixed for path.
|
12
|
+
|
13
|
+
* doc/RELEASES: updated.
|
14
|
+
|
15
|
+
* bin/new_form.rb: deprecated.
|
16
|
+
|
17
|
+
* bin/new_app.rb: deprecated.
|
18
|
+
|
19
|
+
* bin/nitrogen: implemented.
|
20
|
+
|
21
|
+
* bin/nitro: implemented to start default application,
|
22
|
+
use -rubygems.
|
23
|
+
|
24
|
+
03-04-2005 George Moschovitis <gm@navel.gr>
|
25
|
+
|
26
|
+
* lib/nitro/render.rb (#compile_action): handle __ separators,
|
27
|
+
(#template_for_action): fixed to look into subdirectories.
|
28
|
+
|
29
|
+
* test/nitro/tc_dispatcher.rb: added more tests.
|
30
|
+
|
31
|
+
* lib/nitro/dispatcher.rb (#dispatch): updated to
|
32
|
+
handle actions in subdirs.
|
33
|
+
|
34
|
+
* doc/RELEASES: updated.
|
35
|
+
|
36
|
+
01-04-2005 George Moschovitis <gm@navel.gr>
|
37
|
+
|
38
|
+
* some fixes to make the tests pass again.
|
39
|
+
|
40
|
+
* doc/RELEASES: updated.
|
41
|
+
|
42
|
+
* doc/AUTHORS: updated.
|
43
|
+
|
44
|
+
* README: updated.
|
45
|
+
|
46
|
+
* examples/no_xsl_blog/*: added localization support.
|
47
|
+
|
48
|
+
* examples/*: fixed for default environment.
|
49
|
+
|
50
|
+
* lib/nitro.rb: setups a default environment [james_b].
|
51
|
+
|
52
|
+
* lib/nitro/environment.rb: introduced and implemented.
|
53
|
+
|
54
|
+
01-04-2005 James Britt <james_b@neurogami.com>
|
55
|
+
|
56
|
+
* lib/nitro/controller.rb: fixed DEF_FILE calc for win32.
|
57
|
+
|
58
|
+
31-03-2005 George Moschovitis <gm@navel.gr>
|
59
|
+
|
60
|
+
* examples/blig/src/controller.rb (#toggle_locale): implemented.
|
61
|
+
|
62
|
+
* examples/blog/*: added localization support.
|
63
|
+
|
64
|
+
* test/nitro/localization.rb: introced and implemented tests.
|
65
|
+
|
66
|
+
* lib/nitro/localization.rb: worked on this,
|
67
|
+
(Locale): introduced,
|
68
|
+
yeah localization kinda works,
|
69
|
+
added support for sprintf interpolation.
|
70
|
+
support for procs as localization agents,
|
71
|
+
added some documentation.
|
72
|
+
(LocalizationShader): introduced.
|
73
|
+
(LocalizationFilter): reimplemented,
|
74
|
+
fixed default locale.
|
75
|
+
added support for parsing localization rules from yaml files.
|
76
|
+
|
77
|
+
30-03-2005 George Moschovitis <gm@navel.gr>
|
78
|
+
|
79
|
+
* examples/blog/*: use the new, easier/powerful way to set
|
80
|
+
the template root.
|
81
|
+
|
82
|
+
* lib/nitro/caching/stores.rb (FileStore): better handling of
|
83
|
+
cache_root.
|
84
|
+
|
85
|
+
* lib/nitro/controller.rb (#method_missing): use the class
|
86
|
+
template_root,
|
87
|
+
many changes to handle the template_root here.
|
88
|
+
|
89
|
+
* lib/nitro/scaffold.rb (#scaffold):
|
90
|
+
added new, edit, form default methods,
|
91
|
+
save: implemented.
|
92
|
+
override default rendering if a template is provided.
|
93
|
+
|
94
|
+
* lib/nitro/shaders: introduced.
|
95
|
+
|
96
|
+
29-03-2005 George Moschovitis <gm@navel.gr>
|
97
|
+
|
98
|
+
* lib/nitro/shaders.rb: cleaned up old code,
|
99
|
+
(MorphingShader): introduced,
|
100
|
+
(ElementsShader): introduced,
|
101
|
+
implemented times morphing,
|
102
|
+
after a lot of experiments got the regexp right.
|
103
|
+
each morphing,
|
104
|
+
if/unless morphing.
|
105
|
+
|
106
|
+
* lib/nitro/render.rb: add base to template root.
|
107
|
+
|
108
|
+
* lib/nitro/dispatcher.rb: return base.
|
109
|
+
|
110
|
+
* lib/nitro/part.rb: reintroduced.
|
111
|
+
|
112
|
+
* worked a lot on the high level framework.
|
113
|
+
|
1
114
|
28-03-2005 George Moschovitis <gm@navel.gr>
|
2
115
|
|
116
|
+
* lib/nitro/template.rb: added support for erb style interpolators <% %>.
|
117
|
+
|
118
|
+
* --- VERSION 0.14.0 ---
|
119
|
+
|
3
120
|
* lib/nitro/controller.rb (#inherited): made compatible with Win32.
|
4
121
|
|
5
122
|
* examples/why_wiki/run.rb: set pwd.
|
data/INSTALL
CHANGED
data/README
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Nitro 0.
|
1
|
+
= Nitro 0.15.0
|
2
2
|
|
3
3
|
Nitro is an efficient, yet simple engine for developing professional Web
|
4
4
|
Applications using the Ruby language. Nitro aims to provide a robust
|
@@ -18,15 +18,15 @@ A short summary of the major features:
|
|
18
18
|
* Multiparadigm web applications.
|
19
19
|
|
20
20
|
You can write applications in the ASP/JSP/PHP style, ie by writting
|
21
|
-
server pages that are automatically
|
21
|
+
server pages that are automatically translated to Ruby code by
|
22
22
|
Nitro.
|
23
23
|
|
24
|
-
Alternatively, you can write
|
25
|
-
|
24
|
+
Alternatively, you can write MVC style applications (like Rails) by
|
25
|
+
utilizing the powerfull Controller mechanism.
|
26
26
|
|
27
27
|
* Advanced Code generation.
|
28
28
|
|
29
|
-
Nitro in essence writes
|
29
|
+
Nitro in essence writes the Web application for you. The system
|
30
30
|
provides a number of domain spefic language extensions (meta-languages)
|
31
31
|
to automate generate of common code (OR mapping, validation,
|
32
32
|
forms generation, syndication, markup and more).
|
@@ -47,7 +47,7 @@ A short summary of the major features:
|
|
47
47
|
|
48
48
|
Og is a combination of the best features of Active Record and the
|
49
49
|
former O-R mapping library included in Nitro (NDB). Adapters for
|
50
|
-
PostgreSQL, MySQL and
|
50
|
+
PostgreSQL, MySQL, SQLite3, Oracle and SQL Server are included.
|
51
51
|
|
52
52
|
* XML server pages (.xhtml)
|
53
53
|
|
@@ -119,7 +119,7 @@ A short summary of the major features:
|
|
119
119
|
Runs on Linux and Windows. Has not been tested under MacOSX and
|
120
120
|
other Unices.
|
121
121
|
|
122
|
-
* Multiple
|
122
|
+
* Multiple Adapters
|
123
123
|
|
124
124
|
Nitro supports multiple web server configurations. Out of the box
|
125
125
|
it supports WEBrick (pure ruby), Lighttpd (fastcgi), Apache (fastcgi).
|
@@ -130,12 +130,18 @@ A short summary of the major features:
|
|
130
130
|
Configuration files are kept to the absolute minimum. The target
|
131
131
|
is to have no configuration files at all.
|
132
132
|
|
133
|
+
* Scaffolding
|
134
|
+
|
135
|
+
This enables the developer to get started as fast as possible.
|
136
|
+
|
133
137
|
* Distributed State
|
134
138
|
|
135
139
|
Nitro provides a powerfull distributed state mechanism that utilizes
|
136
140
|
the DRb library. A typicall use of this infrastructure is to provide
|
137
141
|
distributed sessions when running your application over a server
|
138
142
|
cluster. Distributed sessions are fully transparent to the developer.
|
143
|
+
|
144
|
+
Support for Memcached will be available soon.
|
139
145
|
|
140
146
|
* Request Filters
|
141
147
|
|
@@ -157,14 +163,16 @@ A short summary of the major features:
|
|
157
163
|
Other libraries of parts are expected from the Ruby community when
|
158
164
|
the Part API is finalized.
|
159
165
|
|
160
|
-
*
|
166
|
+
* Fine-grained Caching
|
161
167
|
|
162
168
|
Nitro provides a well designed and efficient caching mechanism. Caching
|
163
169
|
will be provided at the following levels:
|
164
170
|
|
165
|
-
*
|
166
|
-
* Object Cache (deserialized objects)
|
171
|
+
* Object Cache (deserialized objects) (coming soon)
|
167
172
|
* Fragment Caching (cache generated sub-parts of a page, or a page)
|
173
|
+
* Action Caching (full pages)
|
174
|
+
* Output Caching (the whole page is stored as html and served by
|
175
|
+
the front web server, thus completely bypassing Nitro)
|
168
176
|
* HTTP 1.1 Caching (downstream caching of whole pages)
|
169
177
|
|
170
178
|
The engine calculates intra-page dependencies automatically. A variety
|
@@ -202,10 +210,10 @@ A short summary of the major features:
|
|
202
210
|
p u.errors[:password]
|
203
211
|
end
|
204
212
|
|
205
|
-
*
|
206
|
-
|
207
|
-
Experimental.
|
213
|
+
* Routing
|
208
214
|
|
215
|
+
This enables portable rewrites and 'nice' urls.
|
216
|
+
|
209
217
|
* Advanced debuging features
|
210
218
|
|
211
219
|
* When running in debug mode, all exceptions raised are logged
|
@@ -227,24 +235,21 @@ A short summary of the major features:
|
|
227
235
|
to make form based application development easier (for example
|
228
236
|
an efficient, database-aware Pager component).
|
229
237
|
|
230
|
-
* Path overloading
|
231
|
-
|
232
|
-
Experimental.
|
233
|
-
|
234
238
|
* Localization
|
235
239
|
|
236
|
-
Nitro supports efficient localization of
|
240
|
+
Nitro supports efficient and fully transparent localization of
|
241
|
+
web applications.
|
237
242
|
|
238
243
|
|
239
244
|
== Download
|
240
245
|
|
241
246
|
The latest version of Nitro can be found at
|
242
247
|
|
243
|
-
* http://
|
248
|
+
* http://nitro.rubyforge.org
|
244
249
|
|
245
250
|
Documentation for Nitro can be found at
|
246
251
|
|
247
|
-
* http://
|
252
|
+
* http://nitro.rubyforge.org
|
248
253
|
|
249
254
|
|
250
255
|
== Requirements
|
@@ -307,6 +312,9 @@ gem install nitro
|
|
307
312
|
Then try to run the examples/tiny Example application.
|
308
313
|
|
309
314
|
A tar.gz distribution is also available on http://www.rubyforge.com/projects/nitro
|
315
|
+
This distribution is intended to allow developers to get a
|
316
|
+
quick look at the platform. For real development please use
|
317
|
+
the gem distribution.
|
310
318
|
|
311
319
|
|
312
320
|
== Running the example applications
|
@@ -331,7 +339,7 @@ $ vi run.rb
|
|
331
339
|
|
332
340
|
$ ruby run.rb
|
333
341
|
|
334
|
-
browse http://127.0.0.1:
|
342
|
+
browse http://127.0.0.1:9999
|
335
343
|
|
336
344
|
* examples/blog
|
337
345
|
|
@@ -368,7 +376,7 @@ $ ruby run.rb
|
|
368
376
|
this script starts the the blog application using the WEBrick
|
369
377
|
adapter.
|
370
378
|
|
371
|
-
browse http://127.0.0.1:
|
379
|
+
browse http://127.0.0.1:9999
|
372
380
|
|
373
381
|
You can run the application in debug mode with the following
|
374
382
|
command:
|
@@ -399,15 +407,6 @@ examples/
|
|
399
407
|
lib/nitro
|
400
408
|
Nitro library source files.
|
401
409
|
|
402
|
-
lib/og
|
403
|
-
Og library source files.
|
404
|
-
|
405
|
-
lib/glue
|
406
|
-
Common source files.
|
407
|
-
|
408
|
-
lib/parts
|
409
|
-
Nitro Web Framework parts. A part is a module of functionality
|
410
|
-
|
411
410
|
test
|
412
411
|
Unit and functional tests.
|
413
412
|
|
data/Rakefile
CHANGED
@@ -56,7 +56,7 @@ spec = Gem::Specification.new do |s|
|
|
56
56
|
s.required_ruby_version = '>= 1.8.1'
|
57
57
|
|
58
58
|
s.files = FileList[
|
59
|
-
'[A-Z]*', 'install.rb', '{bin,benchmark,examples,doc,lib,test,vendor}/**/*'
|
59
|
+
'[A-Z]*', 'install.rb', '{bin,benchmark,examples,doc,proto,lib,test,vendor}/**/*'
|
60
60
|
].exclude('.svn/**/*').exclude('*.og').exclude('**/*.log').to_a
|
61
61
|
|
62
62
|
s.require_path = 'lib'
|
@@ -70,7 +70,7 @@ spec = Gem::Specification.new do |s|
|
|
70
70
|
s.test_files = []
|
71
71
|
|
72
72
|
s.bindir = 'bin'
|
73
|
-
s.executables = ['nitro']
|
73
|
+
s.executables = ['nitro', 'nitrogen']
|
74
74
|
s.default_executable = 'nitro'
|
75
75
|
|
76
76
|
s.author = 'George Moschovitis'
|
data/bin/nitro
CHANGED
@@ -1,3 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
$NITRO_NO_ENVIRONMENT = true
|
4
|
+
|
5
|
+
require 'nitro'
|
6
|
+
|
7
|
+
if File.exist?('run.rb')
|
8
|
+
system('ruby -rubygems run.rb')
|
9
|
+
else
|
10
|
+
puts 'No application found, starting default application.'
|
11
|
+
system('ruby -rubygems ' + File.join(Nitro::LibPath, '..', 'proto', 'run.rb'))
|
12
|
+
end
|
data/bin/{new_app.rb → nitrogen}
RENAMED
@@ -1,19 +1,17 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
|
-
# = New Project Wizzard
|
4
|
-
#
|
5
|
-
# Creates the directory structure for a new project.
|
6
|
-
#
|
7
|
-
# code:
|
8
3
|
# * George Moschovitis <gm@navel.gr>
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# $Id: new_app.rb 194 2004-12-20 20:23:57Z gmosx $
|
4
|
+
# (c) 2004-2005 Navel, all rights reserved.
|
5
|
+
# $Id$
|
12
6
|
|
13
7
|
require 'fileutils'
|
14
8
|
|
9
|
+
$NITRO_NO_ENVIRONMENT = true
|
10
|
+
|
11
|
+
require 'nitro'
|
12
|
+
|
15
13
|
# gmosx, TODO: move to a library
|
16
|
-
|
14
|
+
|
17
15
|
def ll_r(path, &block)
|
18
16
|
Dir.foreach(path) do |f|
|
19
17
|
next if [".", ".."].include?(f)
|
@@ -23,32 +21,24 @@ def ll_r(path, &block)
|
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
26
|
-
|
24
|
+
proto_dir = File.join(Nitro::LibPath, '..', 'proto')
|
27
25
|
|
28
26
|
if base_dir = ARGV[0]
|
29
27
|
|
30
28
|
# remove the trailing '/' if it exists.
|
29
|
+
|
31
30
|
base_dir = base_dir.gsub(/\/$/, '')
|
32
31
|
|
33
32
|
# the following code is win32 compatible.
|
34
|
-
#
|
35
|
-
FileUtils.cp_r "#{bin_dir}/proto", base_dir
|
36
|
-
ll_r(base_dir) { |f| FileUtils.rm_rf(f) if /\.svn$/ =~ f }
|
37
33
|
|
38
|
-
|
39
|
-
|
40
|
-
%x{
|
41
|
-
cp -R #{bin_dir}/proto #{base_dir}
|
42
|
-
find #{base_dir} | grep "\.svn$" | xargs rm -rf
|
43
|
-
}
|
44
|
-
=end
|
34
|
+
FileUtils.cp_r proto_dir, base_dir
|
35
|
+
ll_r(base_dir) { |f| FileUtils.rm_rf(f) if /\.svn$/ =~ f }
|
45
36
|
|
46
37
|
else
|
47
38
|
|
48
39
|
puts %{
|
49
40
|
USAGE:
|
50
|
-
|
41
|
+
nitrogen base_dir
|
51
42
|
}
|
52
43
|
|
53
44
|
end
|
54
|
-
|
data/doc/AUTHORS
CHANGED
@@ -6,26 +6,17 @@ MAIN DEVELOPER:
|
|
6
6
|
|
7
7
|
IDEAS, ADDITIONAL CODING, SUPPORT:
|
8
8
|
|
9
|
-
* Michael Neumann <mneumann@ntecs.de>
|
10
|
-
Design, additional coding and bug reports.
|
11
|
-
|
12
|
-
* Matt Bowen <matt.bowen@farweststeel.com>
|
13
|
-
Additional code and documentation.
|
14
|
-
|
15
9
|
* Anastasios Koutoumanos <ak@navel.gr>
|
16
10
|
Design, additional coding.
|
17
11
|
|
18
|
-
*
|
19
|
-
Additional
|
12
|
+
* Matt Bowen <matt.bowen@farweststeel.com>
|
13
|
+
Additional code and documentation.
|
20
14
|
|
21
|
-
*
|
22
|
-
|
15
|
+
* James Britt <james_b@neurogami.com>
|
16
|
+
Design, bug reports.
|
23
17
|
|
24
18
|
* Thomas Quas <tquas@yahoo.com>
|
25
19
|
Ideas, bug reports, unit tests.
|
26
20
|
|
27
21
|
* Kostas Nasis <kostas@nasis.com>
|
28
22
|
Ideas and bug reports.
|
29
|
-
|
30
|
-
* Elias Karakoulakis <ekarak@navel.gr>
|
31
|
-
Additional design.
|
data/doc/RELEASES
CHANGED
@@ -1,3 +1,101 @@
|
|
1
|
+
== Version 0.15.0 was released on 4/03/2005.
|
2
|
+
|
3
|
+
A great release. Many cool new features and tons of subtle
|
4
|
+
improvements. We also welcome a new core developer, Anastastios
|
5
|
+
Koutoumanos, who's first contribution is the new SqlServer adapter.
|
6
|
+
|
7
|
+
Most notable additions:
|
8
|
+
|
9
|
+
* Advanced localization support:
|
10
|
+
|
11
|
+
locale_en = {
|
12
|
+
'See you' => 'See you',
|
13
|
+
:long_paragraph => 'The best new books, up to 30% reduced price',
|
14
|
+
:price => 'Price: %d %s',
|
15
|
+
:proc_price => proc { |value, cur| "Price: #{value} #{cur}" }
|
16
|
+
}
|
17
|
+
|
18
|
+
locale_de = {
|
19
|
+
'See you' => 'Auf wieder sehen',
|
20
|
+
...
|
21
|
+
}
|
22
|
+
|
23
|
+
lc = Localization.get
|
24
|
+
lc['See you'] -> See you
|
25
|
+
lc[:price, 100, 'euro'] -> Price: 100 euro
|
26
|
+
lc = Localization.get[:de]
|
27
|
+
lc['See you'] -> Auf wiedersehen
|
28
|
+
|
29
|
+
Using the LocalizationShader you can have templates like this:
|
30
|
+
|
31
|
+
<h1>[[This is a localized]] String</h1>
|
32
|
+
<p>
|
33
|
+
do you [[:like]] this?
|
34
|
+
</p>
|
35
|
+
|
36
|
+
All strings enclosed in [[ ]] are replaced with localized
|
37
|
+
versions (honouring the session locale). Check out the updated
|
38
|
+
blog example.
|
39
|
+
|
40
|
+
* Dynamic/Parametrised mixins. A great extension to Ruby's mixin
|
41
|
+
feature. The Og::list implementation is replaced with the new
|
42
|
+
Orderable dynamic mixin, here is an example:
|
43
|
+
|
44
|
+
class Comment
|
45
|
+
property :body, String
|
46
|
+
belongs_to :article, Article
|
47
|
+
include Orderable, :scope => article
|
48
|
+
end
|
49
|
+
|
50
|
+
c.move_higher
|
51
|
+
|
52
|
+
The Orderable mixin uses the :scope parameter to dynamically alter
|
53
|
+
the methods appended to the Comment class. This new feature will be
|
54
|
+
used throughout the platform.
|
55
|
+
|
56
|
+
* NestedSets mixin:
|
57
|
+
|
58
|
+
class Comment
|
59
|
+
include NestedSets
|
60
|
+
end
|
61
|
+
|
62
|
+
or
|
63
|
+
|
64
|
+
class Comment
|
65
|
+
include Hierarchical, :method => :nested_sets
|
66
|
+
end
|
67
|
+
|
68
|
+
c.add_comment(child_comment)
|
69
|
+
c.full_children
|
70
|
+
c.direct_children
|
71
|
+
c.children
|
72
|
+
|
73
|
+
this is a reimplementation of the SqlTraversable mixin
|
74
|
+
available in older versions.
|
75
|
+
|
76
|
+
* Improved templating system. Now allows <% %> intrerpolators
|
77
|
+
and provides a number of html morphing effects:
|
78
|
+
|
79
|
+
<div if="admin">
|
80
|
+
admin interface
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<ul>
|
84
|
+
<li each="u in @users">#{u.first_name} #{u.last_name}
|
85
|
+
</ul>
|
86
|
+
|
87
|
+
and more...
|
88
|
+
|
89
|
+
* Og provides an SqlServer adapter out of the box.
|
90
|
+
|
91
|
+
* Improved scaffolding code (still a lot more to come).
|
92
|
+
|
93
|
+
* Build default environment, introduced nitro and nitrogen
|
94
|
+
commands to help new users.
|
95
|
+
|
96
|
+
* Many, many small improvements and fixes.
|
97
|
+
|
98
|
+
|
1
99
|
== Version 0.14.0 was released on 28/03/2005.
|
2
100
|
|
3
101
|
This release fixes *important* bugs amd improves various
|