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
@@ -7,7 +7,7 @@ code:
7
7
  * George Moschovitis <gm@navel.gr>
8
8
 
9
9
  (c) 2004 Navel, all rights reserved.
10
- $Id: style.xsl 149 2004-11-13 19:52:32Z gmosx $
10
+ $Id: style.xsl 167 2004-11-23 14:03:10Z gmosx $
11
11
  -->
12
12
 
13
13
  <!DOCTYPE shader
@@ -43,7 +43,8 @@ $Id: style.xsl 149 2004-11-13 19:52:32Z gmosx $
43
43
 
44
44
  <base href="#$srv_url/" />
45
45
  <link href="/style.css" rel="stylesheet" type="text/css" media="screen" />
46
-
46
+ <link rel="alternate" type="application/rss+xml" title="Latest Entries" href="#$srv_url/rest/list_entry" />
47
+ <link rel="alternate" type="application/rss+xml" title="Latest Comments" href="#$srv_url/rest/list_comment" />
47
48
  <xsl:apply-templates select="x:cell[@id='head']"/>
48
49
  </head>
49
50
  </xsl:template>
@@ -66,6 +67,7 @@ $Id: style.xsl 149 2004-11-13 19:52:32Z gmosx $
66
67
  <html>
67
68
  <xsl:call-template name="x:head" />
68
69
  <body>
70
+
69
71
  <div id="page">
70
72
 
71
73
  <xsl:call-template name="x:header" />
@@ -98,19 +100,29 @@ $Id: style.xsl 149 2004-11-13 19:52:32Z gmosx $
98
100
  <li><a target="_new" href="http://www.w3c.org">W3 Consortium</a></li>
99
101
  </ul>
100
102
 
103
+ <br />
104
+ <ul class="rss">
105
+ <li><a href="rest/list_entry">Latest entries</a></li>
106
+ <li><a href="rest/list_comment">Latest comments</a></li>
107
+ </ul>
108
+
101
109
  <br />
102
110
  <p>
103
- powered by <b><a href="http://www.navel.gr/nitro">Nitro</a></b>,
104
- Skin from <a href="http://www.blogger.com">Blogger.com</a>.
111
+ powered by <b><a href="http://www.navel.gr/nitro">Nitro</a></b>
112
+ <br />
113
+ skin from <a href="http://www.blogger.com">Blogger.com</a>
105
114
  </p>
106
115
  </div>
107
116
 
108
117
  <div class="clear">.</div>
109
118
 
110
119
  <xsl:apply-templates select="x:cell[@id='bottom']" />
111
-
120
+
112
121
  <xsl:call-template name="x:footer" />
113
122
  </div>
123
+
124
+ <xsl:call-template name="x:rendering-errors" />
125
+
114
126
  </body>
115
127
  </html>
116
128
  </xsl:template>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0"?>
2
+
3
+ <entry>
4
+ <title>#{@entry.title}</title>
5
+ <date>#{@entry.create_time.strftime('%B %e, %G')}</date>
6
+ <body>#{@entry.body}</body>
7
+ <comments>
8
+ <?r for comment in @entry.comments ?>
9
+ <comment>#{comment.body}</comment>
10
+ <?r end ?>
11
+ </comments>
12
+ </entry>
@@ -6,12 +6,11 @@
6
6
  # * George Moschovitis <gm@navel.gr>
7
7
  #
8
8
  # (c) 2004 Navel, all rights reserved.
9
- # $Id: run.rb 155 2004-11-13 20:32:12Z gmosx $
9
+ # $Id: run.rb 167 2004-11-23 14:03:10Z gmosx $
10
10
 
11
11
  $:.unshift "../../lib"
12
12
 
13
- require "nitro"
14
- require "nitro/logger"
13
+ require "glue/logger"
15
14
  require "og"
16
15
 
17
16
  # Full debug information.
@@ -8,18 +8,17 @@
8
8
  # * George Moschovitis <gm@navel.gr>
9
9
  #
10
10
  # (c) 2004 Navel, all rights reserved.
11
- # $Id: config.rb 155 2004-11-13 20:32:12Z gmosx $
11
+ # $Id: config.rb 167 2004-11-23 14:03:10Z gmosx $
12
12
 
13
13
  require "nitro"
14
- require "nitro/logger"
14
+ require "glue/logger"
15
15
  require "nitro/config"
16
16
 
17
- require "nitro/utils/number"
18
- require "nitro/utils/string"
19
- require "nitro/utils/array"
20
- require "nitro/utils/hash"
21
- require "nitro/utils/html"
22
- require "nitro/utils/gfx"
17
+ require "glue/number"
18
+ require "glue/string"
19
+ require "glue/array"
20
+ require "glue/hash"
21
+ require "nitro/html"
23
22
 
24
23
  require "nitro/server/webrick"
25
24
 
@@ -0,0 +1,52 @@
1
+ # = Glue
2
+ #
3
+ # General libraries used by various projects.
4
+ #
5
+ # code:
6
+ # * George Moschovitis <gm@navel.gr>
7
+ #
8
+ # (c) 2004 Navel, all rights reserved.
9
+ # $Id$
10
+
11
+ require "English"
12
+ require "pp"
13
+
14
+ require 'glue/property'
15
+
16
+ class NilClass
17
+ # quite usefull for error tolerant apps.
18
+ # a bit dangerous? Will have to rethink this.
19
+ #
20
+ def empty?
21
+ return true
22
+ end
23
+ end
24
+
25
+ class Class
26
+ #--
27
+ # gmosx: is this really needed?
28
+ #++
29
+ def to_i()
30
+ return self.hash()
31
+ end
32
+ end
33
+
34
+ module Kernel
35
+ # pretty prints an exception/error object
36
+ # usefull for helpfull debug messages
37
+ #
38
+ # Input:
39
+ # The Exception/StandardError object
40
+ #
41
+ # Output:
42
+ # the pretty printed string
43
+ #
44
+ def pp_exception(ex)
45
+ return %{#{ex.message}\n\tBACKTRACE:\n\t#{ex.backtrace.join("\n\t")}\n\tLOGGED FROM:\n\t#{caller[0]}}
46
+ end
47
+
48
+ end
49
+
50
+ # predefine some comonly used objects
51
+
52
+ EMPTY_STRING = ""
@@ -2,11 +2,11 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2002-2003 Navel, all rights reserved.
5
- # $Id: array.rb 152 2004-11-13 20:02:35Z gmosx $
5
+ # $Id: array.rb 165 2004-11-18 12:04:04Z gmosx $
6
6
 
7
7
  require "sync"
8
8
 
9
- module N
9
+ module G
10
10
 
11
11
  # == SafeArray
12
12
  #
@@ -3,9 +3,9 @@
3
3
  # * Anastasios Koutoumanos <ak@navel.gr>
4
4
  #
5
5
  # (c) 2004 Navel, all rights reserved.
6
- # $Id: cache.rb 152 2004-11-13 20:02:35Z gmosx $
6
+ # $Id: cache.rb 167 2004-11-23 14:03:10Z gmosx $
7
7
 
8
- module N;
8
+ module G;
9
9
 
10
10
  # = LRUCache
11
11
  #
@@ -2,11 +2,11 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: hash.rb 152 2004-11-13 20:02:35Z gmosx $
5
+ # $Id: hash.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "sync"
8
8
 
9
- module N;
9
+ module G;
10
10
 
11
11
  # == SafeHash
12
12
  #
@@ -0,0 +1,91 @@
1
+ # Code from RubyOnRailes (http://www.rubyonrails.com)
2
+ # Copyright (c) 2004 David Heinemeier Hansson.
3
+ #
4
+
5
+ module G
6
+
7
+ # The Inflector transforms words from singular to plural, class names to table names, modulized class names to ones without,
8
+ # and class names to foreign keys.
9
+ #
10
+ module Inflector
11
+ extend self
12
+
13
+ def pluralize(word)
14
+ result = word.dup
15
+ plural_rules.each do |(rule, replacement)|
16
+ break if result.gsub!(rule, replacement)
17
+ end
18
+ return result
19
+ end
20
+
21
+ def singularize(word)
22
+ result = word.dup
23
+ singular_rules.each do |(rule, replacement)|
24
+ break if result.gsub!(rule, replacement)
25
+ end
26
+ return result
27
+ end
28
+
29
+ def camelize(lower_case_and_underscored_word)
30
+ lower_case_and_underscored_word.gsub(/(^|_)(.)/){$2.upcase}
31
+ end
32
+
33
+ def underscore(camel_cased_word)
34
+ camel_cased_word.gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z])([A-Z])/,'\1_\2').downcase
35
+ end
36
+
37
+ def demodulize(class_name_in_module)
38
+ class_name_in_module.gsub(/^.*::/, '')
39
+ end
40
+
41
+ def foreign_key(class_name, separate_class_name_and_id_with_underscore = true)
42
+ Inflector.underscore(Inflector.demodulize(class_name)) +
43
+ (separate_class_name_and_id_with_underscore ? "_id" : "id")
44
+ end
45
+
46
+ # Convert a class to a name.
47
+ #
48
+ def name(klass)
49
+ Inflector.underscore(Inflector.demodulize(klass.to_s))
50
+ end
51
+
52
+ # Convert a class to a name in plural
53
+ #
54
+ def plural_name(klass)
55
+ Inflector.pluralize(Inflector.underscore(Inflector.demodulize(klass.to_s)))
56
+ end
57
+
58
+ private
59
+ def plural_rules #:doc:
60
+ [
61
+ [/(x|ch|ss)$/, '\1es'], # search, switch, fix, box, process, address
62
+ [/([^aeiouy]|qu)y$/, '\1ies'], # query, ability, agency
63
+ [/(?:([^f])fe|([lr])f)$/, '\1\2ves'], # half, safe, wife
64
+ [/sis$/, 'ses'], # basis, diagnosis
65
+ [/([ti])um$/, '\1a'], # datum, medium
66
+ [/person$/, 'people'], # person, salesperson
67
+ [/man$/, 'men'], # man, woman, spokesman
68
+ [/child$/, 'children'], # child
69
+ [/s$/, 's'], # no change (compatibility)
70
+ [/$/, 's']
71
+ ]
72
+ end
73
+
74
+ def singular_rules #:doc:
75
+ [
76
+ [/(x|ch|ss)es$/, '\1'],
77
+ [/([^aeiouy]|qu)ies$/, '\1y'],
78
+ [/([lr])ves$/, '\1f'],
79
+ [/([^f])ves$/, '\1fe'],
80
+ [/(analy|ba|diagno|parenthe|progno|synop|the)ses$/, '\1sis'],
81
+ [/([ti])a$/, '\1um'],
82
+ [/people$/, 'person'],
83
+ [/men$/, 'man'],
84
+ [/status$/, 'status'],
85
+ [/children$/, 'child'],
86
+ [/s$/, '']
87
+ ]
88
+ end
89
+ end
90
+
91
+ end # module
@@ -7,7 +7,7 @@
7
7
  # * George Moschovitis <gm@navel.gr>
8
8
  #
9
9
  # (c) 2004 Navel, all rights reserved.
10
- # $Id: logger.rb 152 2004-11-13 20:02:35Z gmosx $
10
+ # $Id: logger.rb 161 2004-11-18 10:51:51Z gmosx $
11
11
 
12
12
  require "logger"
13
13
 
@@ -9,7 +9,7 @@
9
9
  # George Moschovitis <gm@navel.gr>
10
10
  #
11
11
  # (c) 2004 Navel, all rights reserved.
12
- # $Id: macros.rb 155 2004-11-13 20:32:12Z gmosx $
12
+ # $Id: macro.rb 165 2004-11-18 12:04:04Z gmosx $
13
13
 
14
14
  $__macros__ = {}
15
15
  $__required__ = {}
@@ -4,17 +4,16 @@
4
4
  # entities.
5
5
  #
6
6
  # code:
7
- # George Moschovitis <gm@navel.gr>
7
+ # * George Moschovitis <gm@navel.gr>
8
8
  #
9
9
  # (c) 2004 Navel, all rights reserved.
10
10
  # $Id$
11
11
 
12
- module N;
12
+ module G;
13
13
 
14
14
  # = Expirable
15
15
  #
16
- # Generic expiring functionality mixin. This is not exclusive
17
- # for entities.
16
+ # Generic expiring functionality mixin.
18
17
  #
19
18
  module Expirable
20
19
  attr_accessor :expires
@@ -2,16 +2,16 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: number.rb 152 2004-11-13 20:02:35Z gmosx $
5
+ # $Id: number.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
- module N;
7
+ module G;
8
8
 
9
9
  # = NumberUtils
10
10
  #
11
11
  # === Design:
12
12
  #
13
13
  # Implement as a module to avoid class polution. You can
14
- # still Ruby's advanced features to include the module in your
14
+ # still use Ruby's advanced features to include the module in your
15
15
  # class. Passing the object to act upon allows to check for nil,
16
16
  # which isn't possible if you use self.
17
17
  #
@@ -2,12 +2,12 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: pool.rb 152 2004-11-13 20:02:35Z gmosx $
5
+ # $Id: pool.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "thread"
8
8
  require "monitor"
9
9
 
10
- module N
10
+ module G
11
11
 
12
12
  # = Pool
13
13
  #
@@ -5,12 +5,12 @@
5
5
  # * Elias Karakoulakis <ekarak@ktismata.com>
6
6
  #
7
7
  # (c) 2004 Navel, all rights reserved.
8
- # $Id: properties.rb 155 2004-11-13 20:32:12Z gmosx $
8
+ # $Id: property.rb 167 2004-11-23 14:03:10Z gmosx $
9
9
 
10
- require "nitro/utils/array"
11
- require "nitro/utils/hash"
10
+ require "glue/array"
11
+ require "glue/hash"
12
12
 
13
- module N
13
+ module G
14
14
 
15
15
  # = Property
16
16
  #
@@ -108,9 +108,9 @@ class Module
108
108
  }
109
109
  end
110
110
 
111
- @__props = N::SafeArray.new() unless @__props
111
+ @__props = G::SafeArray.new() unless @__props
112
112
 
113
- property = N::Property.new(symbol, klass, meta)
113
+ property = G::Property.new(symbol, klass, meta)
114
114
 
115
115
  reader = meta[:reader] || true
116
116
  writer = writer || meta[:writer] || false
@@ -265,7 +265,7 @@ class Module
265
265
  # Attach metadata
266
266
  #
267
267
  def meta(key, val)
268
- @__meta = N::SafeHash.new unless @__meta
268
+ @__meta = G::SafeHash.new unless @__meta
269
269
 
270
270
  @__meta[key] = [] unless @__meta[key]
271
271
 
@@ -280,7 +280,7 @@ class Module
280
280
  def inherit_meta(mod = superclass)
281
281
  # concat props.
282
282
  if mod.__props
283
- @__props = N::SafeArray.new unless @__props
283
+ @__props = G::SafeArray.new unless @__props
284
284
 
285
285
  mod.__props.each { |p|
286
286
  __add_prop(p)
@@ -4,11 +4,11 @@
4
4
  # * Elias Karakoulakis <ekarak@ktismata.com>
5
5
  #
6
6
  # (c) 2004 Navel, all rights reserved.
7
- # $Id: string.rb 152 2004-11-13 20:02:35Z gmosx $
7
+ # $Id: string.rb 165 2004-11-18 12:04:04Z gmosx $
8
8
 
9
9
  require "uri"
10
10
 
11
- module N;
11
+ module G;
12
12
 
13
13
  # = StringUtils
14
14
  #
@@ -221,3 +221,4 @@ module StringUtils
221
221
  end
222
222
 
223
223
  end # module
224
+
@@ -2,13 +2,13 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: time.rb 152 2004-11-13 20:02:35Z gmosx $
5
+ # $Id: time.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "time.rb"
8
8
 
9
- module N;
9
+ module G;
10
10
 
11
- # = TimeUtils
11
+ # = Time
12
12
  #
13
13
  # General time utilities collection
14
14
  #