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
@@ -2,14 +2,14 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: request.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: request.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "cgi"
8
8
  require "ftools"
9
9
 
10
- require "nitro/utils/string"
11
- require "nitro/utils/uri"
12
- require "nitro/utils/http"
10
+ require "glue/string"
11
+ require "nitro/uri"
12
+ require "nitro/http"
13
13
  require "nitro/server/cookie"
14
14
  require "nitro/server/requestpart"
15
15
 
@@ -352,7 +352,7 @@ class Request
352
352
  def get(key, default=nil)
353
353
  val = @parameters[key]
354
354
 
355
- if !val or (val.is_a?(String) and (not N::StringUtils.valid?(val)))
355
+ if !val or (val.is_a?(String) and (not G::StringUtils.valid?(val)))
356
356
  @parameters[key] = default
357
357
  return default
358
358
  elsif default.is_a?(Integer)
@@ -429,7 +429,7 @@ class Request
429
429
  # Check if a parameter is valid
430
430
  #
431
431
  def param?(param)
432
- return N::StringUtils.valid?(self[param])
432
+ return G::StringUtils.valid?(self[param])
433
433
  end
434
434
  alias_method :action?, :param?
435
435
 
@@ -465,7 +465,7 @@ class Request
465
465
  end
466
466
 
467
467
  # gmosx: to avoid using param?
468
- if param.is_a?(String) and (not N::StringUtils.valid?(param))
468
+ if param.is_a?(String) and (not G::StringUtils.valid?(param))
469
469
  return nil
470
470
  else
471
471
  return param
@@ -2,14 +2,14 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: requestpart.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: requestpart.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "cgi"
8
8
  require "ftools"
9
9
 
10
- require "nitro/utils/string"
11
- require "nitro/utils/uri"
12
- require "nitro/utils/http"
10
+ require "glue/string"
11
+ require "nitro/uri"
12
+ require "nitro/http"
13
13
  require "nitro/server/cookie"
14
14
 
15
15
  module N
@@ -2,11 +2,11 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: script.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: script.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "fileutils"
8
8
 
9
- require "nitro/utils/cache"
9
+ require "glue/cache"
10
10
  require "nitro/server/fragment"
11
11
 
12
12
  module N
@@ -63,7 +63,7 @@ class Script
63
63
 
64
64
  # sub-scripts set: a set of files this script depends on.
65
65
  # We use a hash to implement a set.
66
- @sub_scripts = N::SafeArray.new
66
+ @sub_scripts = G::SafeArray.new
67
67
 
68
68
  # a cache for the script outputs (fragments). Keeps multiple revisions
69
69
  # of the script output according to user, access rights etc.
@@ -74,7 +74,7 @@ class Script
74
74
  #
75
75
  # DISK CACHING IS SLOW!
76
76
  #
77
- @fragment_cache = N::LRUCache.new(1000)
77
+ @fragment_cache = G::LRUCache.new(1000)
78
78
 
79
79
  __init()
80
80
  end
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: server.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: server.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "drb"
8
8
 
@@ -25,7 +25,7 @@ module ServerMixin
25
25
  $sessions = DRbObject.new(nil, $drb_sessions_cluster)
26
26
  else
27
27
  # NoCluster mode: use standard Ruby onjects.
28
- $lm = N::SafeHash.new
28
+ $lm = G::SafeHash.new
29
29
  $sessions = N::App::SessionManager.new
30
30
  end
31
31
 
@@ -2,11 +2,11 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2002-2003 Navel, all rights reserved.
5
- # $Id: session.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: session.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "md5"
8
8
 
9
- require "nitro/utils/hash"
9
+ require "glue/hash"
10
10
  require "nitro/server/user"
11
11
 
12
12
  module N
@@ -23,13 +23,13 @@ module N
23
23
  #
24
24
  # SOS: This object lives in the Cluster!
25
25
  #
26
- class SessionManager < N::SafeHash
26
+ class SessionManager < G::SafeHash
27
27
  # the collection of online users.
28
28
  attr_reader :online
29
29
 
30
30
  def initialize
31
31
  super
32
- @online = N::SafeHash.new
32
+ @online = G::SafeHash.new
33
33
  end
34
34
 
35
35
  # Return the number of anonymous sessions.
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: webrick.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: webrick.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "webrick"
8
8
 
@@ -34,7 +34,7 @@ module WEBrick
34
34
  # clickstream there is no referer, set "/" by default.
35
35
  #
36
36
  def referer
37
- return @header["referer"].shift || "/"
37
+ return @header["referer"][0] || "/"
38
38
  end
39
39
  alias_method :referrer, :referer
40
40
 
@@ -2,9 +2,10 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: service.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: service.rb 159 2004-11-18 10:18:30Z gmosx $
6
6
 
7
7
  require 'nitro/server/render'
8
+ require 'nitro/scaffold'
8
9
 
9
10
  module N
10
11
 
@@ -6,9 +6,9 @@
6
6
  # George Moschovitis <gm@navel.gr>
7
7
  #
8
8
  # (c) 2004 Navel, all rights reserved.
9
- # $Id: sitemap.rb 155 2004-11-13 20:32:12Z gmosx $
9
+ # $Id: sitemap.rb 167 2004-11-23 14:03:10Z gmosx $
10
10
 
11
- require "nitro/utils/hash"
11
+ require "glue/hash"
12
12
 
13
13
  module N
14
14
 
@@ -85,7 +85,7 @@ end
85
85
  # - Use a second class in the UI namespace for rendering
86
86
  # related stuff?
87
87
  #
88
- class SiteMap < N::SafeHash
88
+ class SiteMap < G::SafeHash
89
89
 
90
90
  # The root page for this sitemap
91
91
  attr_accessor :root
@@ -2,12 +2,12 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: uri.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: uri.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  require "uri"
8
8
  require "cgi"
9
9
 
10
- require "nitro/utils/string"
10
+ require "glue/string"
11
11
 
12
12
  module N
13
13
 
@@ -165,7 +165,7 @@ module UriUtils
165
165
  hash.update(parameters)
166
166
  query_string = self.hash_to_query_string(hash)
167
167
 
168
- if N::StringUtils.valid?(query_string)
168
+ if G::StringUtils.valid?(query_string)
169
169
  return "#{rest}?#{query_string}"
170
170
  else
171
171
  return rest
@@ -2,10 +2,10 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: version.rb 157 2004-11-13 20:43:11Z gmosx $
5
+ # $Id: version.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  # The name of the server.
8
8
  $srv_name = 'Nitro'
9
9
 
10
10
  # The version of the server.
11
- $srv_version = '0.4.1'
11
+ $srv_version = '0.5.0'
data/lib/og.rb CHANGED
@@ -2,13 +2,13 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: og.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: og.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
- require "nitro/properties"
8
- require "nitro/utils/array"
9
- require "nitro/utils/hash"
10
- require "nitro/utils/time"
11
- require "nitro/utils/pool"
7
+ require "glue/property"
8
+ require "glue/array"
9
+ require "glue/hash"
10
+ require "glue/time"
11
+ require "glue/pool"
12
12
 
13
13
  require "og/meta"
14
14
 
@@ -158,8 +158,8 @@ class Database
158
158
  require "og/backends/#{backend}"
159
159
  eval %{ @config[:backend] = #{backend.capitalize}Backend }
160
160
 
161
- @connection_pool = N::Pool.new
162
- @managed_classes = N::SafeHash.new
161
+ @connection_pool = G::Pool.new
162
+ @managed_classes = G::SafeHash.new
163
163
 
164
164
  $log.info "Connecting to database '#{@config[:database]}' using backend '#{backend}'."
165
165
 
@@ -3,7 +3,7 @@
3
3
  # * Elias Athanasopoulos <elathan@navel.gr>
4
4
  #
5
5
  # (c) 2004 Navel, all rights reserved.
6
- # $Id: mysql.rb 155 2004-11-13 20:32:12Z gmosx $
6
+ # $Id: mysql.rb 159 2004-11-18 10:18:30Z gmosx $
7
7
 
8
8
  require "mysql"
9
9
 
@@ -266,6 +266,8 @@ class MysqlBackend < Og::Backend
266
266
  fields = []
267
267
 
268
268
  klass.__props.each do |p|
269
+ klass.sql_index(p.symbol) if p.meta[:sql_index]
270
+
269
271
  field = "#{p.symbol}"
270
272
 
271
273
  if p.meta and p.meta[:sql]
@@ -285,18 +287,8 @@ class MysqlBackend < Og::Backend
285
287
  sql << ", #{constrains.join(', ')}"
286
288
  end
287
289
 
288
- sql << ");"
289
-
290
- # Create indices
290
+ sql << ');'
291
291
 
292
- if klass.__meta
293
- for data in klass.__meta[:sql_index]
294
- idx, pre_sql, post_sql = *data
295
- idxname = idx.gsub(/ /, "").gsub(/,/, "_").gsub(/\(.*\)/, "")
296
- sql << " CREATE #{pre_sql} INDEX #{klass::DBTABLE}_#{idxname}_idx #{post_sql} ON #{klass::DBTABLE} (#{idx});"
297
- end
298
- end
299
-
300
292
  begin
301
293
  exec(sql)
302
294
  $log.info "Created table '#{klass::DBTABLE}'."
@@ -307,6 +299,18 @@ class MysqlBackend < Og::Backend
307
299
  raise
308
300
  end
309
301
  end
302
+
303
+ # Create indices
304
+
305
+ if klass.__meta
306
+ for data in klass.__meta[:sql_index]
307
+ idx, options = *data
308
+ idx = idx.to_s
309
+ pre_sql, post_sql = options[:pre], options[:post]
310
+ idxname = idx.gsub(/ /, "").gsub(/,/, "_").gsub(/\(.*\)/, "")
311
+ exec "CREATE #{pre_sql} INDEX #{klass::DBTABLE}_#{idxname}_idx #{post_sql} ON #{klass::DBTABLE} (#{idx})"
312
+ end
313
+ end
310
314
  end
311
315
 
312
316
  # Deserialize one row of the resultset.
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: psql.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: psql.rb 159 2004-11-18 10:18:30Z gmosx $
6
6
 
7
7
  require "postgres"
8
8
 
@@ -243,6 +243,8 @@ class PsqlBackend < Og::Backend
243
243
  fields = []
244
244
 
245
245
  klass.__props.each do |p|
246
+ klass.sql_index(p.symbol) if p.meta[:sql_index]
247
+
246
248
  field = "#{p.symbol}"
247
249
 
248
250
  if p.meta and p.meta[:sql]
@@ -268,7 +270,9 @@ class PsqlBackend < Og::Backend
268
270
 
269
271
  if klass.__meta
270
272
  for data in klass.__meta[:sql_index]
271
- idx, pre_sql, post_sql = *data
273
+ idx, options = *data
274
+ idx = idx.to_s
275
+ pre_sql, post_sql = options[:pre], options[:post]
272
276
  idxname = idx.gsub(/ /, "").gsub(/,/, "_").gsub(/\(.*\)/, "")
273
277
  sql << " CREATE #{pre_sql} INDEX #{klass::DBTABLE}_#{idxname}_idx #{post_sql} ON #{klass::DBTABLE} (#{idx});"
274
278
  end
@@ -2,13 +2,13 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: connection.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: connection.rb 167 2004-11-23 14:03:10Z gmosx $
6
6
 
7
7
  module Og;
8
8
 
9
- require "nitro/properties"
10
- require "nitro/utils/array"
11
- require "nitro/utils/time"
9
+ require "glue/property"
10
+ require "glue/array"
11
+ require "glue/time"
12
12
 
13
13
  # = Connection
14
14
  #
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: meta.rb 155 2004-11-13 20:32:12Z gmosx $
5
+ # $Id: meta.rb 159 2004-11-18 10:18:30Z gmosx $
6
6
 
7
7
  require 'og/backend'
8
8
 
@@ -33,6 +33,12 @@ end
33
33
  #
34
34
  module MetaLanguage
35
35
 
36
+ # Defines an SQL index.
37
+ #
38
+ def sql_index(index, options = {})
39
+ meta :sql_index, [index, options]
40
+ end
41
+
36
42
  # Implements a 'belongs_to' relation.
37
43
  # Automatically enchants the calling class with helper methods.
38
44
  #
@@ -0,0 +1,8 @@
1
+ # code:
2
+ # * George Moschovitis <gm@navel.gr>
3
+ #
4
+ # (c) 2004 Navel, all rights reserved.
5
+ # $Id$
6
+
7
+ # The version of Og.
8
+ $og_version = '0.5.0'
@@ -77,6 +77,16 @@ author: gmosx
77
77
  </xsl:processing-instruction>
78
78
  </xsl:template>
79
79
 
80
+ <!-- rendering errors -->
81
+ <xsl:template name='x:rendering-errors' match='x:rendering-errors'>
82
+ <ruby>unless @rendering_errors.empty?</ruby>
83
+ <div id="rendering-errors">
84
+ <h3>RENDERING ERRORS:</h3>
85
+ #{@rendering_errors.join('<br />')}
86
+ </div>
87
+ <ruby>end</ruby>
88
+ </xsl:template>
89
+
80
90
  <!-- form errors temlate -->
81
91
  <xsl:template name='x:form-errors' match='x:form-errors'>
82
92
  <ruby>if errors = request.errors_to_a()</ruby>
@@ -1,17 +1,17 @@
1
1
  # :nodoc: all
2
2
 
3
3
  require "test/unit"
4
- require "nitro/utils/cache"
4
+ require "glue/cache"
5
5
 
6
6
  class TC_N_Utils_Cache < Test::Unit::TestCase
7
7
  # :nodoc: all
8
8
 
9
9
  class Dummy
10
- include N::LRUCache::Item
10
+ include G::LRUCache::Item
11
11
  end
12
12
 
13
13
  def setup
14
- @cache = N::LRUCache.new(maxitems = 3)
14
+ @cache = G::LRUCache.new(maxitems = 3)
15
15
  end
16
16
 
17
17
  def teardown
@@ -1,14 +1,13 @@
1
1
  # :nodoc: all
2
2
 
3
3
  require "test/unit"
4
- require "nitro/utils/cache"
4
+ require "glue/hash"
5
5
 
6
6
  class TC_N2_Utils_Cache < Test::Unit::TestCase
7
7
  # :nodoc: all
8
- include N
9
8
 
10
9
  def setup
11
- @safe_cache = SafeHash.new(Hash.new)
10
+ @safe_cache = G::SafeHash.new(Hash.new)
12
11
  end
13
12
 
14
13
  def teardown