nitro 0.4.1 → 0.5.0

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