nitro 0.4.1 → 0.5.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 (84) hide show
  1. data/AUTHORS +9 -1
  2. data/ChangeLog +107 -1
  3. data/README +1 -1
  4. data/RELEASES +14 -0
  5. data/Rakefile +73 -28
  6. data/bin/cluster.rb +2 -2
  7. data/examples/blog/app.rb +2 -2
  8. data/examples/blog/config.rb +14 -15
  9. data/examples/blog/lib/blog.rb +13 -20
  10. data/examples/blog/root/entry_form.xhtml +0 -1
  11. data/examples/blog/root/m/rss.gif +0 -0
  12. data/examples/blog/root/style.css +17 -0
  13. data/examples/blog/root/style.xsl +17 -5
  14. data/examples/blog/root/view_entry.xml +12 -0
  15. data/examples/og/run.rb +2 -3
  16. data/examples/tiny/config.rb +7 -8
  17. data/lib/glue.rb +52 -0
  18. data/lib/{nitro/utils → glue}/array.rb +2 -2
  19. data/lib/{nitro/utils → glue}/cache.rb +2 -2
  20. data/lib/{nitro/utils → glue}/hash.rb +2 -2
  21. data/lib/glue/inflector.rb +91 -0
  22. data/lib/{nitro → glue}/logger.rb +1 -1
  23. data/lib/{nitro/macros.rb → glue/macro.rb} +1 -1
  24. data/lib/{nitro → glue}/mixins.rb +3 -4
  25. data/lib/{nitro/utils → glue}/number.rb +3 -3
  26. data/lib/{nitro/utils → glue}/pool.rb +2 -2
  27. data/lib/{nitro/properties.rb → glue/property.rb} +8 -8
  28. data/lib/{nitro/utils → glue}/string.rb +3 -2
  29. data/lib/{nitro/utils → glue}/time.rb +3 -3
  30. data/lib/nitro.rb +2 -43
  31. data/lib/nitro/application.rb +2 -2
  32. data/lib/nitro/builders/rss.rb +43 -0
  33. data/lib/nitro/config.rb +13 -4
  34. data/lib/nitro/{utils/html.rb → html.rb} +2 -2
  35. data/lib/nitro/{utils/http.rb → http.rb} +1 -1
  36. data/lib/nitro/{utils/mail.rb → mail.rb} +1 -1
  37. data/lib/nitro/scaffold.rb +80 -0
  38. data/lib/nitro/server/appserver.rb +2 -2
  39. data/lib/nitro/server/cluster.rb +2 -2
  40. data/lib/nitro/server/dispatcher.rb +2 -5
  41. data/lib/nitro/server/filters/autologin.rb +2 -2
  42. data/lib/nitro/server/fragment.rb +5 -5
  43. data/lib/nitro/server/handlers.rb +3 -3
  44. data/lib/nitro/server/render.rb +145 -22
  45. data/lib/nitro/server/request.rb +7 -7
  46. data/lib/nitro/server/requestpart.rb +4 -4
  47. data/lib/nitro/server/script.rb +4 -4
  48. data/lib/nitro/server/server.rb +2 -2
  49. data/lib/nitro/server/session.rb +4 -4
  50. data/lib/nitro/server/webrick.rb +2 -2
  51. data/lib/nitro/service.rb +2 -1
  52. data/lib/nitro/sitemap.rb +3 -3
  53. data/lib/nitro/{utils/uri.rb → uri.rb} +3 -3
  54. data/lib/nitro/version.rb +2 -2
  55. data/lib/og.rb +8 -8
  56. data/lib/og/backends/mysql.rb +16 -12
  57. data/lib/og/backends/psql.rb +6 -2
  58. data/lib/og/connection.rb +4 -4
  59. data/lib/og/meta.rb +7 -1
  60. data/lib/og/version.rb +8 -0
  61. data/lib/xsl/base.xsl +10 -0
  62. data/test/{n/utils → glue}/tc_cache.rb +3 -3
  63. data/test/{n/utils → glue}/tc_hash.rb +2 -3
  64. data/test/{n/utils/tc_number.rb → glue/tc_numbers.rb} +3 -4
  65. data/test/{n → glue}/tc_properties.rb +2 -2
  66. data/test/glue/tc_strings.rb +103 -0
  67. data/test/{n → nitro}/server/tc_cookie.rb +0 -0
  68. data/test/{n → nitro}/server/tc_filters.rb +0 -0
  69. data/test/{n → nitro}/server/tc_request.rb +1 -1
  70. data/test/{n → nitro}/server/tc_requestpart.rb +0 -0
  71. data/test/{n → nitro}/server/tc_session.rb +0 -0
  72. data/test/{n → nitro}/tc_events.rb +0 -0
  73. data/test/{n/utils → nitro}/tc_html.rb +1 -1
  74. data/test/{n/utils → nitro}/tc_http.rb +1 -1
  75. data/test/{n → nitro}/tc_sitemap.rb +1 -1
  76. data/test/{n/utils → nitro}/tc_uri.rb +1 -1
  77. data/test/{n → nitro}/ui/tc_pager.rb +1 -1
  78. data/test/{n/tc_og.rb → tc_og.rb} +5 -2
  79. metadata +48 -44
  80. data/examples/blog/log/app.log +0 -117
  81. data/examples/tiny/log/app.log +0 -23
  82. data/lib/nitro/utils/gfx.rb +0 -107
  83. data/lib/nitro/utils/template.rb +0 -36
  84. data/test/n/utils/tc_strings.rb +0 -104
data/AUTHORS CHANGED
@@ -1,6 +1,11 @@
1
+ MAIN DEVELOPER:
2
+
1
3
  * George Moschovitis <gm@navel.gr>
2
- Architecture and Design, lead developer, documentation, maintainer.
4
+ Project Leader, Architecture and Design, main coder, documentation,
5
+ maintainer.
3
6
 
7
+ IDEAS, ADDITIONAL CODING, SUPPORT:
8
+
4
9
  * Anastasios Koutoumanos <ak@navel.gr>
5
10
  Design, additional coding.
6
11
 
@@ -9,3 +14,6 @@
9
14
 
10
15
  * Elias Karakoulakis <ekarak@navel.gr>
11
16
  Additional design.
17
+
18
+ * Kostas Nasis <kostas@nasis.com>
19
+ Ideas and bug reports.
data/ChangeLog CHANGED
@@ -1,5 +1,111 @@
1
- 15-10-2004 George Moschovitis <gm@navel.gr>
1
+
2
+ 23-10-2004 George Moschovitis <gm@navel.gr>
3
+
4
+ * test/*: fixed directory structure,
5
+ fixed include N.
6
+
7
+ * RELEASES: updated.
8
+
9
+ * lib/nitro/scaffold.rb: add methods to the scaffolded class!
10
+ add view_uri method.
11
+
12
+ * examples/blog/root/style.xsl: added RSS links.
13
+
14
+ * examples/blog/lib/blog.rb (#view_uri): added.
15
+
16
+ * lib/nitro/builders/rss.rb: introduced,
17
+ headers, list, render, default pubDate,
18
+ yeah it works,
19
+ Recoded builder to use the RSS library included in Ruby.
20
+
21
+ * lib/nitro/builders: introduced.
22
+
23
+ * lib/nitro/template.rb: scrapped.
24
+
25
+ 22-10-2004 George Moschovitis <gm@navel.gr>
26
+
27
+ * lib/xsl/base.xsl: rendering-errors.
28
+
29
+ * lib/nitro/server/render.rb (#render): rescue errors, flag with (error),
30
+ introduced rendering_errors,
31
+ (#log_error)
32
+
33
+ 21-10-2004 George Moschovitis <gm@navel.gr>
34
+
35
+ * examples/blog/root/view_entry.xml: just cool :)
36
+
37
+ * lib/nitro/server/dispatcher.rb (#process): removed api check,
38
+ dont set content-type.
39
+
40
+ * lib/nitro/server/webrick.rb (#do_GET): removed api check.
41
+
42
+ * lib/nitro/server/render.rb (#template_for_method): implemented,
43
+ (#transform_template): renamed,
44
+ (RenderUtils#compile_method): catch invlaid methods, raise exception,
45
+ yeah, correctly handle dir/index.xhtml case,
46
+ fixed check for valid methods,
47
+ uses api.
48
+ (RenderUtils#split_path): extracts api.
49
+ (RenderUtils#compile_rest_method): implemented.
50
+ set content-type in render methods.
51
+ ULTRACOOL: the rest dispatcher works.
52
+
53
+
54
+ * lib/nitro/config.rb: $template_ext, $xml_template_ext,
55
+ $index_template.
56
+
57
+ 18-10-2004 George Moschovitis <gm@navel.gr>
58
+
59
+ * lib/nitro/server/dispatcher.rb (#process): support for rpc.
60
+
61
+ * lib/nitro/server/webrick.rb (#referer): no shift,
62
+ (#do_GET): check for ^rpc case.
63
+
64
+ * AUTHORS: updated.
65
+
66
+ * RELEASES.og: written.
67
+
68
+ * README.og: written.
69
+
70
+ * Rakefile: updated to copy glue in the og distribution,
71
+ yeah, the Og distribution works.
72
+
73
+ * lib/nitro/gfx.rb: moved to Gen.
74
+
75
+ * lib/glue: introduced,
76
+ moved many files from lib/nitro/* and lib/nitro/utils/* here.
77
+
78
+ 17-10-2004 George Moschovitis <gm@navel.gr>
79
+
80
+ * README.og: introduced.
81
+ * RELEASES.og: introduced.
82
+ * ChangeLog.og: introduced.
2
83
 
84
+ * lib/og/version.rb: introduced.
85
+
86
+ * Rakefile: introduced Og GemSpec.
87
+
88
+ 16-10-2004 George Moschovitis <gm@navel.gr>
89
+
90
+ * lib/og/backends/mysql.rb (#create_table): handles sql indices.
91
+
92
+ * lib/og/backends/psql.rb (#create_table): handles sql indices.
93
+
94
+ * lib/og/meta.rb (MetaLanguage#sql_index): introduced.
95
+
96
+ * yeah, scaffolding works!
97
+
98
+ * lib/nitro/utils/inflector.rb: temporarily copied from rails.
99
+
100
+ * lib/nitro/scaffold.rb: introduced,
101
+ (#scaffold): started working on this method,
102
+ cool append_features trick,
103
+ :noindex flag!
104
+
105
+ 15-10-2004 George Moschovitis <gm@navel.gr>
106
+
107
+ * --- VERSION 0.4.1 ---
108
+
3
109
  * README: updated.
4
110
 
5
111
  * examples/blog: better documentation.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = Nitro 0.4.1
1
+ = Nitro 0.5.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
data/RELEASES CHANGED
@@ -1,3 +1,17 @@
1
+ == Version 0.5 was released on 23/11/2004.
2
+
3
+ Many new features:
4
+
5
+ * Stand-alone Og distribution.
6
+ * Scaffolding.
7
+ * Og RDBMS index support (works again).
8
+ * improved render/dispatcher.
9
+ * REST/XML dspatcher.
10
+ * RssBuilder.
11
+ * Improved BLOG example.
12
+ * Many fixes.
13
+
14
+
1
15
  == Version 0.4.1 was released on 15/11/2004.
2
16
 
3
17
  A MAJOR revision! The rendering engine was recoded from
data/Rakefile CHANGED
@@ -12,7 +12,8 @@ require "rake/gempackagetask"
12
12
  require "rake/testtask"
13
13
  require "rubygems"
14
14
 
15
- require "lib/nitro/version"
15
+ project = 'nitro'
16
+ #project = 'og'
16
17
 
17
18
  # ----------------------------------------------------------------------
18
19
 
@@ -47,33 +48,77 @@ end
47
48
 
48
49
  # ----------------------------------------------------------------------
49
50
 
50
- PKG_VERSION = $srv_version
51
- PKG_FILES = FileList[
52
- "[A-Z]*", "{bin,etc,ext,examples,doc,lib,test}/**/*"
53
- # "examples/*.rb"
54
- ].exclude(".svn/**/*")
55
-
56
- spec = Gem::Specification.new do |s|
57
- s.name = "nitro"
58
- s.version = PKG_VERSION
59
- s.summary = "Web Engine"
60
- s.description = "An efficient, yet simple engine for Web Applications"
61
- # s.add_dependency("postgres", ">= 0.7.1")
62
- # s.add_dependency("extensions", ">= 0.5")
63
- # s.add_dependency("builder")
64
- s.required_ruby_version = ">= 1.8.1"
65
- s.files = PKG_FILES.to_a
66
- s.require_path = "lib"
67
- s.autorequire = "n/std"
68
- s.has_rdoc = true
69
- s.extra_rdoc_files = FileList["[A-Z]*"].to_a
70
- s.rdoc_options << "--main" << "README" << "--title" << "Nitro Documentation"
71
- s.test_files = []
72
- s.bindir = "bin"
73
- s.author = "George Moschovitis"
74
- s.email = "gm@navel.gr"
75
- s.homepage = "http://www.navel.gr/nitro"
76
- s.rubyforge_project = "nitro"
51
+ if 'nitro' == project
52
+
53
+ # Nitro GemSpec
54
+ #
55
+ require "lib/nitro/version"
56
+
57
+ PKG_VERSION = $srv_version
58
+ PKG_FILES = FileList[
59
+ "[A-Z]*", "{bin,etc,ext,examples,doc,lib,test}/**/*"
60
+ # "examples/*.rb"
61
+ ].exclude(".svn/**/*").exclude("*.og").exclude("**/*.log")
62
+
63
+ spec = Gem::Specification.new do |s|
64
+ s.name = "nitro"
65
+ s.version = PKG_VERSION
66
+ s.summary = "Web Engine"
67
+ s.description = "An efficient, yet simple engine for Web Applications"
68
+ # s.add_dependency("postgres", ">= 0.7.1")
69
+ # s.add_dependency("extensions", ">= 0.5")
70
+ # s.add_dependency("builder")
71
+ s.required_ruby_version = ">= 1.8.1"
72
+ s.files = PKG_FILES.to_a
73
+ s.require_path = "lib"
74
+ s.autorequire = "nitro"
75
+ s.has_rdoc = true
76
+ s.extra_rdoc_files = FileList["[A-Z]*"].exclude("*.og").to_a
77
+ s.rdoc_options << "--main" << "README" << "--title" << "Nitro Documentation"
78
+ s.test_files = []
79
+ s.bindir = "bin"
80
+ s.author = "George Moschovitis"
81
+ s.email = "gm@navel.gr"
82
+ s.homepage = "http://www.navel.gr/nitro"
83
+ s.rubyforge_project = "nitro"
84
+ end
85
+
86
+ else
87
+
88
+ # Og stand-alone GemSpec
89
+ #
90
+ require "lib/og/version"
91
+
92
+ PKG_VERSION = $og_version
93
+ PKG_FILES = FileList[
94
+ "README.og", "RELEASES.og", "LICENSE", "AUTHORS",
95
+ "examples/og/*", "lib/glue.rb", "lib/glue/**/*", "lib/og/**/*", "lib/og.rb",
96
+ "test/*og*.rb"
97
+ ].exclude(".svn/**/*").exclude("**/*.log")
98
+
99
+ spec = Gem::Specification.new do |s|
100
+ s.name = 'og'
101
+ s.version = PKG_VERSION
102
+ s.summary = 'Og (ObjectGraph)'
103
+ s.description = 'An efficient and transparent Object-Relational mapping library'
104
+ # s.add_dependency("postgres", ">= 0.7.1")
105
+ # s.add_dependency("extensions", ">= 0.5")
106
+ # s.add_dependency("builder")
107
+ s.required_ruby_version = ">= 1.8.1"
108
+ s.files = PKG_FILES.to_a
109
+ s.require_path = "lib"
110
+ s.autorequire = "og"
111
+ s.has_rdoc = true
112
+ s.extra_rdoc_files = FileList["README.og", "RELEASES.og", "LICENSE", "AUTHORS"].to_a
113
+ s.rdoc_options << "--main" << "README.og" << "--title" << "Og Documentation"
114
+ s.test_files = []
115
+ s.bindir = "bin"
116
+ s.author = "George Moschovitis"
117
+ s.email = "gm@navel.gr"
118
+ s.homepage = "http://www.navel.gr/og"
119
+ s.rubyforge_project = "og-rml"
120
+ end
121
+
77
122
  end
78
123
 
79
124
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: cluster.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: cluster.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  $:.unshift "lib"
8
8
 
@@ -11,7 +11,7 @@ require "monitor"
11
11
 
12
12
  require "nitro/application"
13
13
  require "nitro/server"
14
- require "nitro/utils/cache"
14
+ require "glue/cache"
15
15
  require "nitro/server/session"
16
16
 
17
17
  module N
@@ -8,10 +8,10 @@
8
8
  # * George Moschovitis <gm@navel.gr>
9
9
  #
10
10
  # (c) 2004 Navel, all rights reserved.
11
- # $Id: app.rb 149 2004-11-13 19:52:32Z gmosx $
11
+ # $Id: app.rb 167 2004-11-23 14:03:10Z gmosx $
12
12
 
13
13
  # set to true for DEBUG mode.
14
- $DBG = false
14
+ $DBG = true
15
15
 
16
16
  $LOAD_PATH.unshift "lib"
17
17
  $LOAD_PATH.unshift "../../lib"
@@ -11,24 +11,23 @@
11
11
  # * George Moschovitis <gm@navel.gr>
12
12
  #
13
13
  # (c) 2004 Navel, all rights reserved.
14
- # $Id: config.rb 155 2004-11-13 20:32:12Z gmosx $
14
+ # $Id: config.rb 167 2004-11-23 14:03:10Z gmosx $
15
15
 
16
16
  require "nitro"
17
- require "nitro/logger"
17
+ require "glue/logger"
18
18
  require "nitro/config"
19
19
 
20
20
  require "og"
21
21
  require "nitro/l10n"
22
22
  require "nitro/events"
23
- require "nitro/mixins"
23
+ require "glue/mixins"
24
24
  require "nitro/sitemap"
25
25
 
26
- require "nitro/utils/number"
27
- require "nitro/utils/string"
28
- require "nitro/utils/array"
29
- require "nitro/utils/hash"
30
- require "nitro/utils/html"
31
- require "nitro/utils/gfx"
26
+ require "glue/number"
27
+ require "glue/string"
28
+ require "glue/array"
29
+ require "glue/hash"
30
+ require "nitro/html"
32
31
 
33
32
  require "nitro/server/webrick"
34
33
  require "nitro/server/shaders"
@@ -52,10 +51,10 @@ if $DBG # DEBUG mode
52
51
 
53
52
  $og = Og::Database.new(
54
53
  :address => "localhost",
55
- :backend => "mysql",
56
- # :backend => "psql",
54
+ # :backend => "mysql",
55
+ :backend => "psql",
57
56
  :database => "blog",
58
- :user => "root",
57
+ :user => "postgres",
59
58
  :password => "navelrulez",
60
59
  :connection_count => 3
61
60
  )
@@ -71,10 +70,10 @@ else # LIVE mode
71
70
 
72
71
  $og = Og::Database.new(
73
72
  :address => "localhost",
74
- :backend => "mysql",
75
- # :backend => "psql",
73
+ # :backend => "mysql",
74
+ :backend => "psql",
76
75
  :database => "blog",
77
- :user => "root",
76
+ :user => "postgres",
78
77
  :password => "navelrulez",
79
78
  :connection_count => 20
80
79
  )
@@ -2,9 +2,10 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: blog.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: blog.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require 'nitro/service'
8
+ require 'nitro/builders/rss'
8
9
 
9
10
  $blog_username = 'your user name'
10
11
  $blog_password = 'your password'
@@ -31,7 +32,7 @@ class Comment < Common; end
31
32
  #
32
33
  class BlogEntry < Common
33
34
  prop_accessor :title, String
34
- has_many :comments, N::Comment, :linkback => 'entry_oid'
35
+ has_many :comments, N::Comment, :linkback => 'entry_oid'
35
36
  end
36
37
 
37
38
  # = Comment
@@ -43,12 +44,10 @@ end
43
44
  # = BlogMethods
44
45
  #
45
46
  module BlogMethods
47
+ include N::Scaffolding
46
48
 
47
- # scaffold N::BlogEntry, :name => 'entry'
48
-
49
- def index
50
- @entries = N::BlogEntry.all('ORDER BY oid DESC LIMIT 5')
51
- end
49
+ scaffold N::BlogEntry, :name => 'entry', :index => true
50
+ scaffold N::Comment
52
51
 
53
52
  def new_entry
54
53
  entry = request.fill(N::BlogEntry.new)
@@ -56,26 +55,20 @@ module BlogMethods
56
55
  entry.save!
57
56
  end
58
57
 
59
- def view_entry
60
- @entry = N::BlogEntry[params['oid']]
58
+ # example of generated view
59
+ def list_entry__xml
60
+ @out << N::RssBuilder.render(@entries)
61
61
  end
62
62
 
63
- def list_entry
64
- @entries = N::BlogEntry.all('ORDER BY oid DESC LIMIT 5')
65
- end
66
-
67
- def del_entry
68
- N::BlogEntry.delete(params['oid'])
69
- end
70
-
71
63
  def new_comment
72
64
  comment = request.fill(N::Comment.new)
73
65
  comment.save!
74
66
  end
75
67
 
76
- def del_comment
77
- N::Comment.delete(params['oid'])
78
- end
68
+ # example of generated view
69
+ def list_comment__xml
70
+ @out << N::RssBuilder.render(@comments)
71
+ end
79
72
 
80
73
  def login
81
74
  if password = params['password']
@@ -1,7 +1,6 @@
1
1
  <?xml version="1.0"?>
2
2
 
3
3
  <div id="comments">
4
-
5
4
  <h2>Post new entry:</h2>
6
5
 
7
6
  <form action="new_entry" method="post">
@@ -199,3 +199,20 @@ h2.date {
199
199
  overflow: hidden;
200
200
  background-color: #f00;
201
201
  }
202
+
203
+ #rendering-errors {
204
+ float: left;
205
+ border: 1px solid red;
206
+ background: white;
207
+ padding: 10px;
208
+ margin: 20px;
209
+ }
210
+
211
+ .rss li {
212
+ list-style: none;
213
+ padding-left: 34px; padding-top: 3px;
214
+ margin-bottom: 3px;
215
+ height: 18px;
216
+ background: url(m/rss.gif) no-repeat 0 6px;
217
+ }
218
+