nitro 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. data/AUTHORS +14 -4
  2. data/ChangeLog +192 -1
  3. data/README +50 -6
  4. data/RELEASES +60 -0
  5. data/Rakefile +1 -1
  6. data/bin/cluster.rb +2 -2
  7. data/bin/new_form.rb +1 -1
  8. data/examples/blog/config.rb +5 -4
  9. data/examples/blog/lib/blog.rb +56 -36
  10. data/examples/blog/root/comments.xhtml +5 -2
  11. data/examples/blog/root/entry_form.xhtml +7 -2
  12. data/examples/blog/root/login.xhtml +1 -1
  13. data/examples/blog/root/style.xsl +7 -0
  14. data/examples/og/mock_example.rb +6 -9
  15. data/examples/og/mysql_to_psql.rb +100 -0
  16. data/examples/og/run.rb +8 -17
  17. data/lib/glue.rb +7 -8
  18. data/lib/glue/array.rb +1 -1
  19. data/lib/glue/attribute.rb +86 -0
  20. data/lib/glue/cache.rb +1 -1
  21. data/lib/glue/hash.rb +1 -1
  22. data/lib/glue/inflector.rb +1 -1
  23. data/lib/glue/logger.rb +118 -18
  24. data/lib/glue/mixins.rb +1 -1
  25. data/lib/glue/number.rb +1 -1
  26. data/lib/glue/pool.rb +1 -1
  27. data/lib/glue/property.rb +48 -31
  28. data/lib/glue/string.rb +1 -1
  29. data/lib/glue/time.rb +2 -2
  30. data/lib/glue/validation.rb +400 -0
  31. data/lib/nitro/application.rb +6 -6
  32. data/lib/nitro/builders/form.rb +5 -5
  33. data/lib/nitro/builders/rss.rb +1 -1
  34. data/lib/nitro/builders/xhtml.rb +119 -0
  35. data/lib/nitro/builders/xml.rb +111 -0
  36. data/lib/nitro/config.rb +6 -6
  37. data/lib/nitro/events.rb +1 -1
  38. data/lib/nitro/html.rb +1 -1
  39. data/lib/nitro/markup.rb +15 -20
  40. data/lib/nitro/scaffold.rb +2 -2
  41. data/lib/nitro/server/appserver.rb +3 -3
  42. data/lib/nitro/server/cluster.rb +2 -2
  43. data/lib/nitro/server/dispatcher.rb +2 -2
  44. data/lib/nitro/server/filters/autologin.rb +1 -1
  45. data/lib/nitro/server/fragment.rb +2 -2
  46. data/lib/nitro/server/handlers.rb +2 -2
  47. data/lib/nitro/server/render.rb +17 -15
  48. data/lib/nitro/server/request.rb +6 -6
  49. data/lib/nitro/server/script.rb +2 -2
  50. data/lib/nitro/server/server.rb +2 -2
  51. data/lib/nitro/server/session.rb +6 -6
  52. data/lib/nitro/server/shaders.rb +2 -2
  53. data/lib/nitro/server/webrick.rb +1 -1
  54. data/lib/nitro/sitemap.rb +2 -2
  55. data/lib/nitro/uri.rb +1 -1
  56. data/lib/nitro/version.rb +7 -5
  57. data/lib/og.rb +95 -129
  58. data/lib/og/backend.rb +47 -46
  59. data/lib/og/backends/mysql.rb +64 -63
  60. data/lib/og/backends/psql.rb +73 -72
  61. data/lib/og/connection.rb +7 -8
  62. data/lib/og/enchant.rb +80 -0
  63. data/lib/og/meta.rb +21 -21
  64. data/lib/og/mock.rb +31 -88
  65. data/lib/og/version.rb +6 -5
  66. data/lib/parts/README +9 -0
  67. data/lib/parts/content.rb +23 -9
  68. data/test/glue/tc_attribute.rb +22 -0
  69. data/test/glue/tc_cache.rb +4 -6
  70. data/test/glue/tc_hash.rb +2 -2
  71. data/test/glue/tc_logger.rb +36 -0
  72. data/test/glue/tc_numbers.rb +2 -2
  73. data/test/glue/tc_property_mixins.rb +35 -4
  74. data/test/glue/tc_strings.rb +32 -32
  75. data/test/glue/tc_validation.rb +186 -0
  76. data/test/nitro/builders/tc_xhtml.rb +38 -0
  77. data/test/nitro/builders/tc_xml.rb +47 -0
  78. data/test/nitro/server/tc_request.rb +2 -2
  79. data/test/nitro/server/tc_session.rb +1 -1
  80. data/test/nitro/tc_sitemap.rb +1 -1
  81. data/test/nitro/ui/tc_pager.rb +1 -10
  82. data/test/tc_og.rb +3 -3
  83. data/vendor/blankslate.rb +53 -0
  84. data/vendor/extensions/_base.rb +153 -0
  85. data/vendor/extensions/_template.rb +36 -0
  86. data/vendor/extensions/all.rb +21 -0
  87. data/vendor/extensions/array.rb +68 -0
  88. data/vendor/extensions/binding.rb +224 -0
  89. data/vendor/extensions/class.rb +50 -0
  90. data/vendor/extensions/continuation.rb +71 -0
  91. data/vendor/extensions/enumerable.rb +250 -0
  92. data/vendor/extensions/hash.rb +23 -0
  93. data/vendor/extensions/io.rb +58 -0
  94. data/vendor/extensions/kernel.rb +42 -0
  95. data/vendor/extensions/module.rb +114 -0
  96. data/vendor/extensions/numeric.rb +230 -0
  97. data/vendor/extensions/object.rb +164 -0
  98. data/vendor/extensions/ostruct.rb +41 -0
  99. data/vendor/extensions/string.rb +316 -0
  100. data/vendor/extensions/symbol.rb +28 -0
  101. metadata +35 -13
  102. data/lib/glue/property.rb.old +0 -307
data/AUTHORS CHANGED
@@ -1,8 +1,8 @@
1
1
  MAIN DEVELOPER:
2
2
 
3
3
  * George Moschovitis <gm@navel.gr>
4
- Project Leader, Architecture and Design, main coder, documentation,
5
- maintainer.
4
+ Project Leader, Architecture and Design, main coder,
5
+ documentation, maintainer.
6
6
 
7
7
  IDEAS, ADDITIONAL CODING, SUPPORT:
8
8
 
@@ -12,8 +12,18 @@ IDEAS, ADDITIONAL CODING, SUPPORT:
12
12
  * Elias Athanasopoulos <elathan@navel.gr>
13
13
  Additional coding.
14
14
 
15
- * Elias Karakoulakis <ekarak@navel.gr>
16
- Additional design.
15
+ * Gavin Sinclair <gsinclair@soyabean.com.au>
16
+ Logger#trace method.
17
+
18
+ * Thomas Quas <tquas@yahoo.com>
19
+ Ideas, bug reports, unit tests.
20
+
21
+ * Michael Neumann <mneumann@ntecs.de>
22
+ Ideas and bug reports.
17
23
 
18
24
  * Kostas Nasis <kostas@nasis.com>
19
25
  Ideas and bug reports.
26
+
27
+ * Elias Karakoulakis <ekarak@navel.gr>
28
+ Additional design.
29
+
data/ChangeLog CHANGED
@@ -1,5 +1,196 @@
1
+
2
+ 12-01-2005 George Moschovitis <gm@navel.gr>
3
+
4
+ * RELEASES.og: updated.
5
+
6
+ * RELEASES: updated.
7
+
8
+ * README: updated.
9
+
10
+ * README.og: updated.
11
+
12
+ * lib/glue/property.rb (#prop): include N::Validation when appending
13
+ a managed module.
14
+
15
+ * examples/blog/root/entr_form.xhtml: added error reporting.
16
+
17
+ * found out NASTY reload bug, temporarily dissabled!
18
+
19
+ * lib/glue/logger.rb: (Logger#error): added.
20
+
21
+ * lib/server/render.rb: improved source,
22
+ (#render): dissabled reloading.
23
+ (#redirect_referer): optional postfix.
24
+
25
+ * lib/nitro/markup.rb: fixed namespace,
26
+ (#expand/#compact): excluded wiki markup from default.
27
+
28
+ * examples/blog/config.rb: require markup, validation.
29
+
30
+ * examples/blog/root/style.xsl: <x:error> introduced.
31
+
32
+ * examples/blog/lib/blog.rb: extend from content,
33
+ use auto markup functionality,
34
+ thanks for the magic of auto markup, comments get
35
+ expanded correctly now, for free :),
36
+ (#new_entry): added validation/error reporting!
37
+ (#get_errors): useful prefilter,
38
+ (Common): made this a module (mixin).
39
+
40
+ 11-01-2005 George Moschovitis <gm@navel.gr>
41
+
42
+ * test/glue/tc_validation.rb (#test_validate_length): implemented.
43
+ cooler, all tests pass.
44
+
45
+ * lib/glue/validation.rb (#validate_length): implemented,
46
+ allow sprintf style error messages,
47
+ (#validate_inclusion): implemented.
48
+
49
+ 10-01-2005 George Moschovitis <gm@navel.gr>
50
+
51
+ * test/nitro/builders/tx_xhtml.rb: introduced,
52
+ yeah, cases pass :)
53
+
54
+ * lib/og/enchant.rb (#enchant): #one alias for #select_one [mneumann].
55
+
56
+ * lib/nitro/builders/xhtml.rb: introduced.
57
+ (#options): implemented,
58
+ (#select): implemented.
59
+
60
+ * lib/nitro/builders/xml.rb (#method_missing): added support
61
+ for blocks in tags,
62
+ (#comment): implemented.
63
+
64
+ 09-01-2005 George Moschovitis <gm@navel.gr>
65
+
66
+ * test/nitro/builders/tc_xml.rb: introduced,
67
+ (#test_missing): implemented.
68
+
69
+ * lib/nitro/builders/xml.rb: introduced,
70
+ (#start_tag, #end_tag): implemented.
71
+ (#method_missing): implemented,
72
+ (XmlBuilder): implemented.
73
+
74
+ * vendor/blankslate.rb: integrated blankslate lib by
75
+ Jim Weirich <jim@weirichhouse.org> [jweirich].
76
+
77
+ 08-01-2005 George Moschovitis <gm@navel.gr>
78
+
79
+ * lib/glue/vaildation.rb (#validate_confirmation): implemented,
80
+ (MetaLanguage): customization options,
81
+ (#validate_value): implemented,
82
+
83
+ 07-01-2005 George Moschovitis <gm@navel.gr>
84
+
85
+ * test/glue/tc_validation.rb: implemented many tests.
86
+
87
+ * lib/glue/property.rb (#prop): auto include the N::Validation module
88
+ in the parent class if defined!
89
+ (PropertyUtils#get_prop): implemented.
90
+
91
+ * lib/glue/validation.rb (Validation::Errors): introduced,
92
+ empty, size, add methods.
93
+ recoded validation code and now works!
94
+ (eval_validate): fixed for multiple objects.
95
+ (Validation::Errors): keep error strings here.
96
+ (MetaLanguage): introduced.
97
+ MEGA: use meta :validations to store validations!
98
+ (Validation::Errors): each, clear.
99
+
100
+ 05-01-2005 George Moschovitis <gm@navel.gr>
101
+
102
+ * test/*: cleaned up some unit tests.
103
+
104
+ * lib/*: removed all $log references!
105
+
106
+ * lib/glue/*: use N:: prefix for all files.
107
+
108
+ 04-01-2005 George Moschovitis <gm@navel.gr>
109
+
110
+ * test/glue/tc_attribute.rb: implemented.
111
+
112
+ * lib/glue/attribute.rb: introduced,
113
+ default value for module/class attributes.
114
+
115
+ * lib/glue/validation.rb: introduced,
116
+ (Validation#validate_format): implemented.
117
+ (Validator): introduced,
118
+ (Validator#eval_validation_method): introduced.
119
+
120
+ * README: running units section.
121
+
122
+ 03-01-2005 George Moschovitis <gm@navel.gr>
123
+
124
+ * lib/nitro/builders/form.rb (#render): emmit id's to make
125
+ the generated forms more style-able.
126
+
127
+ * lib/glue.rb: removed EMPTY_STRING constant [mneumann].
128
+
129
+ * Rakefile: include vendor in Og distribution.
130
+
131
+ 02-01-2005 George Moschovitis <gm@navel.gr>
132
+
133
+ * vendor/extensions: integrated extensions library by
134
+ Gavin Sinclair <gsinclair@soyabean.com.au>
135
+
136
+ * test/glue/tc_logger.rb: introduced.
137
+
138
+ * lib/og.rb: removed logger methods.
139
+
140
+ * lib/glue/logger.rb: added static methods and global logger,
141
+ (#i, #d): removed.
142
+ (#trace): added trace method from dev-utils by
143
+ Gavin Sinclair <gsinclair@soyabean.com.au>,
144
+ fixed Binding.of_caller bug.
145
+ (#get): implemented.
146
+
147
+ 01-01-2005 George Moschovitis <gm@navel.gr>
148
+
149
+ * started using the $:.unshift File.join trick.
150
+
151
+ 30-12-2004 George Moschovitis <gm@navel.gr>
152
+
153
+ * lib/og/mock.rb: include Og::Enchant,
154
+ some more fixes to make this work.
155
+
156
+ * lib/og/enchant.rb: introduced, factors out some code used
157
+ by the MockDatabase.
158
+
159
+ * lib/og/*: converted to new code.
160
+
161
+ * lib/og/meta.rb: dont use $og. [mneumann]
162
+
163
+ * lib/og.rb: made Og a class,
164
+ removed $og_xx_xx options, use class methods [mneumann]
165
+ (Og##use): introduced.
166
+ (#enchant): use Og.db.connection.
167
+ (Database): create!/drop! aliases,
168
+ include Og::Enchant.
169
+ introduced Og.log.
170
+
171
+ 29-12-2004 George Moschovitis <gm@navel.gr>
172
+
173
+ * lib/og/mysql.rb: removed Og::Utils, integrated methods in Backend.
174
+
175
+ * lib/og/psql.rb: removed Og::Utils, integrated methods in Backend.
176
+
177
+ * lib/og/backend.rb: removed Og::Utils, integrated methods in Backend,
178
+ to allow for multiple backend is one App [bcandler].
179
+
180
+ * lib/og.rb (#enchant): enchant methods DONT use $og anymmore. [mneumann]
181
+
182
+ * AUTHORS: updated.
183
+
184
+ * examples/og/mysql_to_psql.rb: introduced and implemented.
185
+
1
186
  27-12-2004 George Moschovitis <gm@navel.gr>
2
187
 
188
+ * lib/parts/content.rb (CreateTime): introduced.
189
+
190
+ * lib/parts/README: introduced.
191
+
192
+ * --- VERSION 0.7.0 ---
193
+
3
194
  * lib/og/mock.rb: fix, dont wrap methods.
4
195
 
5
196
  * Rakefile: fix.
@@ -9,7 +200,7 @@
9
200
  * lib/nitro/server/render.rb (#compile_xxx_method): better handling
10
201
  of redirects,
11
202
  (RenderExit): introduced,
12
- (#redirect): rewritem, raise RenderExit.
203
+ (#redirect): rewritten, raise RenderExit.
13
204
 
14
205
  * lib/nitro/markup.rb (PropertyUtils#prop_setter): override.
15
206
  (#markup): removed.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = Nitro 0.6.0
1
+ = Nitro 0.8.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
@@ -7,6 +7,9 @@ over a server cluster. However, Nitro can also power simple web
7
7
  applications for deployment on intranets or even personal computers.
8
8
  Nitro integrates the powerful Og Object-Relational mapping library.
9
9
 
10
+ Nitro is a multiparadigm application framework and integrates ideas
11
+ from Rails, Wee, PHP, JSP and .NET
12
+
10
13
 
11
14
  == Features
12
15
 
@@ -50,7 +53,6 @@ A short summary of the major features:
50
53
  (for example localization) essentially providing a computationally
51
54
  free transformation step.
52
55
 
53
-
54
56
  * Multi phase evaluation
55
57
 
56
58
  Experimental, facilitates efficient HTTP1.1 caching.
@@ -80,10 +82,10 @@ A short summary of the major features:
80
82
  to describe the relations between objects, a flexible and intuitive api
81
83
  for querieng the database, raw access to the SQL language if needed
82
84
  (for example to fine tune the automatically generated SQL tables, or
83
- for custom queries), suports deserialization to Ruby objects or tuples,
84
- automatically generates join tables for many_to_many relations
85
- and provides a collection of usefull Mixins to synthesize common
86
- Entities.
85
+ for custom queries), provides automatic validation, suports deserialization
86
+ to Ruby objects or tuples, automatically generates join tables for
87
+ many_to_many relations and provides a collection of usefull Mixins to
88
+ synthesize common Entities.
87
89
 
88
90
  Og is a combination of the best features of Active Record and the
89
91
  former O-R mapping library included in Nitro (NDB). Adapters for
@@ -120,6 +122,34 @@ A short summary of the major features:
120
122
  The engine calculates intra-page dependencies automatically. A variety
121
123
  of invalidation strategies can be implemented.
122
124
 
125
+ * Programmatic xhtml rendering.
126
+
127
+ options = ['Male', 'Female']
128
+ o.select(:name => 'sex') {
129
+ o.options(options, selected = 1)
130
+ }
131
+
132
+ or
133
+
134
+ options = { 'Male' => 'm', 'Female' => 'f' }
135
+ o.select(:name => 'sex') {
136
+ o.options(options, selected = 1)
137
+ }
138
+
139
+ * Automatic validation.
140
+
141
+ class User
142
+ prop_accessor :name, :password, String
143
+ validate_confirmation :password
144
+ validate_length :name, :range => 2..12
145
+ end
146
+
147
+ u = User.new(...)
148
+ unless u.valid?
149
+ p u.errors.on(:name)
150
+ p u.errors[:password]
151
+ end
152
+
123
153
  * Support for 'nice' urls.
124
154
 
125
155
  Experimental.
@@ -323,6 +353,20 @@ lib/glue
323
353
  test
324
354
  Unit and functional tests.
325
355
 
356
+ == Running Tests
357
+
358
+ The easiest way to run the included unit tests is through Rake:
359
+
360
+ $ rake test_all
361
+
362
+ runs all the tests including database tests.
363
+
364
+ $ rake test
365
+
366
+ runs all tests except the database tests.
367
+
368
+ Rake can be found at http://rake.rubyforge.org
369
+
326
370
  == Support
327
371
 
328
372
  For any questions regarding Nitro, feel free to ask on the ruby-talk
data/RELEASES CHANGED
@@ -1,3 +1,63 @@
1
+ == Version 0.8 was released on 12/01/2005.
2
+
3
+ A snapshot of the latest code. Cool new features,
4
+ many fixes and improvements in older features. Many thanks
5
+ to Michael Neumann for giving intelligent suggestions
6
+ and finding small bugs.
7
+
8
+ Most notable additions:
9
+
10
+ * New automatic validation system:
11
+
12
+ class User
13
+ prop_accessor :name, :password, String
14
+ validate_confirmation :password
15
+ validate_length :name, :range => 2..12
16
+ end
17
+
18
+ u = User.new(...)
19
+ unless u.valid?
20
+ p u.errors.on(:name)
21
+ p u.errors[:password]
22
+ end
23
+
24
+ * Programmatic xhtml rendering. This is an alternative
25
+ method of rendering that is usefull in building
26
+ components and helpers. This is a preview implementation.
27
+
28
+ options = ['Male', 'Female']
29
+ o.select(:name => 'sex') {
30
+ o.options(options, selected = 1)
31
+ }
32
+
33
+ options = { 'Male' => 'm', 'Female' => 'f' }
34
+ o.select(:name => 'sex') {
35
+ o.options(options, selected = 1)
36
+ }
37
+
38
+ o.html {
39
+ o.p(:class => 'header') { o.b('Hello') }
40
+ }
41
+
42
+ * No global variables in Og.
43
+
44
+ * Recoded Og to allow for future support of multiple databases
45
+ (even on different RDBMS systems) on a single application.
46
+
47
+ * Improved Blog example demonstrates latest advancements.
48
+ (You have to drop the database of earlier versions!)
49
+
50
+ * More unit tests.
51
+
52
+ * Supports Ruby 1.8.2
53
+
54
+ * Integrated extensions/dev-utils by Gavin Sinclair.
55
+
56
+ * Integrated blankslate by Jim Weirich.
57
+
58
+ * And many IMPORTANT bug fixes.
59
+
60
+
1
61
  == Version 0.7 was released on 27/12/2004.
2
62
 
3
63
  A snapshot of the latest code. Many fixes and new features result
data/Rakefile CHANGED
@@ -91,7 +91,7 @@ else
91
91
  PKG_FILES = FileList[
92
92
  "README.og", "RELEASES.og", "LICENSE", "AUTHORS", "Rakefile", "ChangeLog*",
93
93
  "examples/og/*", "lib/glue.rb", "lib/glue/**/*", "lib/og/**/*", "lib/og.rb",
94
- "test/*og*.rb", "test/og/*"
94
+ "test/*og*.rb", "test/og/*", "vendor/extensions/**/*"
95
95
  ].exclude(".svn/**/*").exclude("**/*.log")
96
96
 
97
97
  spec = Gem::Specification.new do |s|
@@ -73,7 +73,7 @@ class Cluster < N::Application
73
73
  begin
74
74
  sdrb.server_sync(key, value)
75
75
  rescue => ex
76
- $log.error "Server at #{uri} is down, removing from cluster"
76
+ Logger.error "Server at #{uri} is down, removing from cluster"
77
77
  cluster.delete(uri)
78
78
  end
79
79
  }
@@ -94,7 +94,7 @@ class Cluster < N::Application
94
94
  begin
95
95
  sdrb.server_sync(key, value) unless uri == server_uri
96
96
  rescue => ex
97
- $log.error "Server at #{uri} is down, removing from cluster"
97
+ Logger.error "Server at #{uri} is down, removing from cluster"
98
98
  cluster.delete(uri)
99
99
  end
100
100
  }
@@ -33,7 +33,7 @@ require lib_filename
33
33
  klass = nil
34
34
  eval "klass = #{klass_name}"
35
35
  dst_dir = File.dirname(lib_filename)
36
- dst_filename = ARGV[3] || File.join(dst_dir, "#{G::Inflector.name(klass_name)}_form.xhtml")
36
+ dst_filename = ARGV[3] || File.join(dst_dir, "#{N::Inflector.name(klass_name)}_form.xhtml")
37
37
 
38
38
  # p klass, lib_filename, dst_filename
39
39
 
@@ -6,18 +6,19 @@
6
6
  #
7
7
  # WARNING: if you want to change the backend dont forget
8
8
  # to change it in the DEBUG and LIVE configurations.
9
- #
10
- # code:
11
- # * George Moschovitis <gm@navel.gr>
12
- #
9
+ #--
10
+ # George Moschovitis <gm@navel.gr>
13
11
  # (c) 2004 Navel, all rights reserved.
14
12
  # $Id: config.rb 197 2004-12-21 13:50:17Z gmosx $
13
+ #++
15
14
 
16
15
  require 'nitro'
17
16
  require 'glue/logger'
17
+ require 'glue/validation'
18
18
  require 'nitro/config'
19
19
 
20
20
  require 'og'
21
+ require 'nitro/markup'
21
22
  require 'nitro/l10n'
22
23
  require 'nitro/events'
23
24
  require 'glue/mixins'