nitro 0.8.0 → 0.9.3

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 (198) hide show
  1. data/AUTHORS +3 -4
  2. data/ChangeLog +418 -0
  3. data/LICENSE +1 -1
  4. data/README +157 -89
  5. data/RELEASES +50 -0
  6. data/Rakefile +5 -7
  7. data/benchmark/nitro/bench.rb +5 -0
  8. data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
  9. data/benchmark/nitro/static-webrick-n-200.txt +43 -0
  10. data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
  11. data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
  12. data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
  13. data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
  14. data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
  15. data/bin/proto/README +2 -2
  16. data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
  17. data/bin/proto/conf/app.conf.rb +22 -0
  18. data/bin/proto/conf/lhttpd.conf +236 -0
  19. data/bin/proto/ctl +4 -0
  20. data/bin/proto/lib/README +5 -0
  21. data/bin/proto/log/README +3 -0
  22. data/bin/proto/root/fcgi.rb +6 -0
  23. data/bin/proto/root/index.xhtml +65 -7
  24. data/bin/proto/root/m/nitro.png +0 -0
  25. data/examples/blog/README +7 -5
  26. data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
  27. data/examples/blog/conf/app.conf.rb +56 -0
  28. data/examples/blog/conf/lhttpd.conf +236 -0
  29. data/examples/blog/ctl +4 -0
  30. data/examples/blog/lib/blog.rb +11 -136
  31. data/examples/blog/lib/blog/controller.rb +99 -0
  32. data/examples/blog/lib/blog/model.rb +39 -0
  33. data/examples/blog/log/README +3 -0
  34. data/examples/blog/root/comments.xhtml +2 -2
  35. data/examples/blog/root/fcgi.rb +6 -0
  36. data/examples/blog/root/index.xhtml +4 -5
  37. data/examples/blog/root/login.xhtml +2 -2
  38. data/examples/blog/root/style.xsl +9 -9
  39. data/examples/blog/root/view_entry.xhtml +2 -2
  40. data/examples/flash/conf/app.conf.rb +23 -0
  41. data/examples/flash/ctl +4 -0
  42. data/examples/flash/log/README +3 -0
  43. data/examples/flash/root/index.xhtml +0 -9
  44. data/examples/flash/root/show_inline_text.xhtml +10 -5
  45. data/examples/no_xsl_blog/README +12 -0
  46. data/examples/no_xsl_blog/conf/apache.conf +0 -0
  47. data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
  48. data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
  49. data/examples/no_xsl_blog/ctl +4 -0
  50. data/examples/no_xsl_blog/lib/blog.rb +20 -0
  51. data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
  52. data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
  53. data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
  54. data/examples/no_xsl_blog/log/README +3 -0
  55. data/examples/no_xsl_blog/root/comments.xhtml +41 -0
  56. data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
  57. data/examples/no_xsl_blog/root/fcgi.rb +6 -0
  58. data/examples/no_xsl_blog/root/index.xhtml +39 -0
  59. data/examples/no_xsl_blog/root/login.xhtml +21 -0
  60. data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
  61. data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
  62. data/examples/no_xsl_blog/root/m/down.gif +0 -0
  63. data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
  64. data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
  65. data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
  66. data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
  67. data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
  68. data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
  69. data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
  70. data/examples/no_xsl_blog/root/m/obull.gif +0 -0
  71. data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
  72. data/examples/no_xsl_blog/root/m/rss.gif +0 -0
  73. data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
  74. data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
  75. data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
  76. data/examples/no_xsl_blog/root/style.css +301 -0
  77. data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
  78. data/examples/no_xsl_blog/root/view_entry.xml +12 -0
  79. data/examples/og/run.rb +2 -2
  80. data/examples/tiny/README +2 -2
  81. data/examples/tiny/conf/apache.conf +5 -0
  82. data/examples/tiny/conf/app.conf.rb +21 -0
  83. data/examples/tiny/conf/lhttpd.conf +236 -0
  84. data/examples/tiny/ctl +4 -0
  85. data/examples/tiny/log/README +3 -0
  86. data/examples/tiny/root/fcgi.rb +6 -0
  87. data/examples/tiny/root/index.xhtml +7 -4
  88. data/examples/tiny/root/nitro.png +0 -0
  89. data/lib/glue.rb +13 -9
  90. data/lib/glue/array.rb +1 -1
  91. data/lib/glue/cache.rb +1 -1
  92. data/lib/glue/flexob.rb +12 -0
  93. data/lib/glue/hash.rb +1 -1
  94. data/lib/glue/inflector.rb +2 -2
  95. data/lib/glue/logger.rb +4 -8
  96. data/lib/glue/misc.rb +14 -0
  97. data/lib/glue/number.rb +1 -1
  98. data/lib/glue/object.rb +26 -0
  99. data/lib/glue/pool.rb +1 -1
  100. data/lib/glue/property.rb +84 -91
  101. data/lib/glue/string.rb +1 -1
  102. data/lib/glue/time.rb +1 -1
  103. data/lib/glue/validation.rb +1 -1
  104. data/lib/nitro.rb +18 -6
  105. data/lib/nitro/adaptors/cgi.rb +291 -0
  106. data/lib/nitro/adaptors/fastcgi.rb +42 -0
  107. data/lib/nitro/adaptors/runner.rb +123 -0
  108. data/lib/nitro/adaptors/webrick.rb +110 -0
  109. data/lib/nitro/buffering.rb +43 -0
  110. data/lib/nitro/builders/form.rb +1 -1
  111. data/lib/nitro/builders/rss.rb +1 -1
  112. data/{bin → lib/nitro}/cluster.rb +26 -30
  113. data/lib/nitro/context.rb +82 -0
  114. data/lib/nitro/controller.rb +50 -0
  115. data/lib/nitro/cookie.rb +46 -0
  116. data/lib/nitro/dispatcher.rb +105 -0
  117. data/lib/nitro/filters.rb +9 -10
  118. data/lib/nitro/localization.rb +42 -0
  119. data/lib/nitro/mail.rb +11 -14
  120. data/lib/nitro/render.rb +275 -0
  121. data/lib/nitro/request.rb +128 -0
  122. data/lib/nitro/response.rb +38 -0
  123. data/lib/nitro/scaffold.rb +11 -11
  124. data/lib/nitro/session.rb +84 -0
  125. data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
  126. data/lib/nitro/ui/pager.rb +23 -26
  127. data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
  128. data/lib/nitro/uri.rb +1 -1
  129. data/lib/nitro/version.rb +10 -8
  130. data/lib/og.rb +66 -65
  131. data/lib/og/backend.rb +1 -1
  132. data/lib/og/backends/mysql.rb +48 -52
  133. data/lib/og/backends/psql.rb +34 -37
  134. data/lib/og/connection.rb +15 -15
  135. data/lib/og/enchant.rb +16 -9
  136. data/lib/og/meta.rb +127 -54
  137. data/lib/og/mock.rb +18 -18
  138. data/lib/og/version.rb +6 -4
  139. data/lib/parts/content.rb +4 -8
  140. data/test/glue/tc_logger.rb +3 -0
  141. data/test/glue/tc_property.rb +19 -3
  142. data/test/nitro/adaptors/tc_cgi.rb +63 -0
  143. data/test/nitro/adaptors/tc_webrick.rb +15 -0
  144. data/test/nitro/builders/tc_xml.rb +2 -2
  145. data/test/nitro/tc_context.rb +13 -0
  146. data/test/nitro/tc_controller.rb +47 -0
  147. data/test/nitro/tc_dispatcher.rb +64 -0
  148. data/test/nitro/tc_session.rb +20 -0
  149. data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
  150. data/test/root/blog/list.xhtml +6 -0
  151. data/test/tc_og.rb +41 -4
  152. metadata +115 -59
  153. data/bin/proto/app.rb +0 -20
  154. data/bin/proto/config.rb +0 -77
  155. data/examples/blog/app.rb +0 -21
  156. data/examples/blog/config.rb +0 -95
  157. data/examples/blog/env.rb +0 -22
  158. data/examples/flash/README +0 -34
  159. data/examples/flash/app.rb +0 -20
  160. data/examples/flash/config.rb +0 -38
  161. data/examples/flash/lib/flash.rb +0 -40
  162. data/examples/flash/tmp.swf +0 -0
  163. data/examples/tiny/app.rb +0 -19
  164. data/examples/tiny/config.rb +0 -29
  165. data/examples/tiny/root/nitro-small.png +0 -0
  166. data/lib/nitro/application.rb +0 -217
  167. data/lib/nitro/config.rb +0 -128
  168. data/lib/nitro/events.rb +0 -122
  169. data/lib/nitro/html.rb +0 -151
  170. data/lib/nitro/http.rb +0 -102
  171. data/lib/nitro/l10n.rb +0 -30
  172. data/lib/nitro/server.rb +0 -59
  173. data/lib/nitro/server/appserver.rb +0 -67
  174. data/lib/nitro/server/cookie.rb +0 -87
  175. data/lib/nitro/server/dispatcher.rb +0 -62
  176. data/lib/nitro/server/filters.rb +0 -75
  177. data/lib/nitro/server/filters/autologin.rb +0 -51
  178. data/lib/nitro/server/fragment.rb +0 -70
  179. data/lib/nitro/server/handlers.rb +0 -127
  180. data/lib/nitro/server/render.rb +0 -426
  181. data/lib/nitro/server/request.rb +0 -658
  182. data/lib/nitro/server/requestpart.rb +0 -54
  183. data/lib/nitro/server/script.rb +0 -387
  184. data/lib/nitro/server/server.rb +0 -57
  185. data/lib/nitro/server/session.rb +0 -220
  186. data/lib/nitro/server/user.rb +0 -46
  187. data/lib/nitro/server/webrick.rb +0 -180
  188. data/lib/nitro/service.rb +0 -26
  189. data/lib/xsl/ui.xsl +0 -51
  190. data/lib/xsl/xforms.xsl +0 -28
  191. data/test/nitro/server/tc_cookie.rb +0 -34
  192. data/test/nitro/server/tc_filters.rb +0 -38
  193. data/test/nitro/server/tc_request.rb +0 -70
  194. data/test/nitro/server/tc_requestpart.rb +0 -28
  195. data/test/nitro/server/tc_session.rb +0 -34
  196. data/test/nitro/tc_events.rb +0 -44
  197. data/test/nitro/tc_html.rb +0 -79
  198. data/test/nitro/tc_http.rb +0 -18
@@ -1,18 +1,14 @@
1
- # code:
2
1
  # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: pager.rb 185 2004-12-10 13:29:09Z gmosx $
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id: pager.rb 223 2005-01-26 17:07:40Z gmosx $
6
4
 
7
5
  require 'nitro/uri'
8
6
 
9
7
  module N; module UI
10
8
 
11
- # = Pager
12
- #
13
9
  # Displays a collection of entitities in multiple pages.
14
10
  #
15
- # === Design:
11
+ # === Design
16
12
  #
17
13
  # The new version is carefully designed for scaleability. It stores
18
14
  # only the items for one page. The name parameter is needed, multiple
@@ -23,7 +19,7 @@ module N; module UI
23
19
  # avoid a concat() in the initialization step.
24
20
  #
25
21
  #
26
- # === Example:
22
+ # === Example
27
23
  #
28
24
  # @pager = N::UI::Pager.new('entries', @request, 5)
29
25
  # @entries = N::BlogEntry.all("ORDER BY oid #{@pager.sql_limit}")
@@ -41,21 +37,24 @@ module N; module UI
41
37
  # <td width="64"><x:pager-next>Next</x:pager-next></td>
42
38
  # </tr>
43
39
  # </table>
44
- #
45
- # === Investigate:
46
- #
40
+ #--
47
41
  # INVESTIGATE:
48
42
  # mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
49
43
  # -> WHERE id > 100 LIMIT 10;
50
44
  # mysql> SELECT FOUND_ROWS();
51
- #
45
+ #++
46
+
52
47
  class Pager < Array
48
+
53
49
  attr_accessor :name, :idx, :page, :page_count
54
- # total count of items
50
+
51
+ # Total count of items
55
52
  attr_accessor :total_count
56
- # page items
53
+
54
+ # Page items
57
55
  attr_accessor :page_items
58
- # read needed variables from the request.
56
+
57
+ # Read needed variables from the request.
59
58
  attr_accessor :request
60
59
 
61
60
  def initialize(name, request, items_per_page = 10, items = nil)
@@ -95,14 +94,14 @@ class Pager < Array
95
94
  end
96
95
 
97
96
  # Iterator
98
- #
97
+
99
98
  def each(&block)
100
99
  @page_items.each(&block)
101
100
  end
102
101
 
103
102
  # Iterator
104
103
  # Returns 1-based index.
105
- #
104
+
106
105
  def each_with_index
107
106
  idx = @start_idx
108
107
  for item in @page_items
@@ -120,7 +119,7 @@ class Pager < Array
120
119
  end
121
120
 
122
121
  # Returns the range of the current page.
123
- #
122
+
124
123
  def page_range
125
124
  s = @idx
126
125
  e = [@idx + @items_per_page - 1, all_total_count].min
@@ -129,7 +128,7 @@ class Pager < Array
129
128
  end
130
129
 
131
130
  # Override if needed.
132
- #
131
+
133
132
  def nav_range
134
133
  # effective range = 10 pages.
135
134
  s = [@page - 5, 1].max()
@@ -144,7 +143,7 @@ class Pager < Array
144
143
  # Override this method in your application
145
144
  # if needed.
146
145
  # TODO: better markup.
147
- #
146
+
148
147
  def navigation
149
148
  nav = ""
150
149
 
@@ -183,7 +182,7 @@ class Pager < Array
183
182
 
184
183
  # Create an appropriate SQL limit clause.
185
184
  # Returns postgres/mysql compatible limit.
186
- #
185
+
187
186
  def sql_limit
188
187
  if @start_idx > 0
189
188
  return "LIMIT #{@items_per_page} OFFSET #{@start_idx}"
@@ -194,20 +193,18 @@ class Pager < Array
194
193
  end
195
194
 
196
195
  # Returns the current offset. The offset is zero-based.
197
- #
196
+
198
197
  def offset
199
198
  (@page-1) * @items_per_page
200
199
  end
201
200
 
202
- # ------------------------------------------------------------------
203
-
204
201
  # Generate the target URI.
205
202
  #
206
203
  def target_uri(page)
207
204
  params = {"__pg#{@name}" => page}
208
- return N::UriUtils.update_query_string(@request.request_uri.to_s, params)
205
+ return N::UriUtils.update_query_string(@request.uri.to_s, params)
209
206
  end
210
207
 
211
208
  end
212
209
 
213
- end; end # module
210
+ end; end
@@ -1,21 +1,13 @@
1
- # = SiteMap
2
- #
3
- # Encapsulates the page structure and additional metadata.
4
- #
5
- # code:
6
- # George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: sitemap.rb 167 2004-11-23 14:03:10Z gmosx $
1
+ # * George Moschovitis <gm@navel.gr>
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id: sitemap.rb 229 2005-01-27 12:55:29Z gmosx $
10
4
 
11
5
  require "glue/hash"
12
6
 
13
7
  module N
14
8
 
15
- # = SitePage
16
- #
17
9
  # A single page in the page map.
18
- #
10
+
19
11
  class SitePage
20
12
  # the uri for this page
21
13
  attr_accessor :uri
@@ -2,7 +2,7 @@
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  #
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: uri.rb 167 2004-11-23 14:03:10Z gmosx $
5
+ # $Id: uri.rb 202 2005-01-17 10:44:13Z gmosx $
6
6
 
7
7
  require "uri"
8
8
  require "cgi"
@@ -1,13 +1,15 @@
1
- #--
2
- # George Moschovitis <gm@navel.gr>
1
+ # * George Moschovitis <gm@navel.gr>
3
2
  # (c) 2004-2005 Navel, all rights reserved.
4
- # $Id: version.rb 194 2004-12-20 20:23:57Z gmosx $
5
- #++
3
+ # $Id: version.rb 247 2005-01-28 16:15:52Z gmosx $
6
4
 
7
- # The name of the server.
5
+ module Nitro
6
+
7
+ # The name of the engine.
8
8
 
9
- $srv_name = 'Nitro'
9
+ Name = 'Nitro'
10
10
 
11
- # The version of the server.
11
+ # The version of the server.
12
12
 
13
- $srv_version = '0.8.0'
13
+ Version = '0.9.3'
14
+
15
+ end
data/lib/og.rb CHANGED
@@ -1,18 +1,15 @@
1
- # code:
2
1
  # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: og.rb 197 2004-12-21 13:50:17Z gmosx $
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id: og.rb 248 2005-01-31 13:38:34Z gmosx $
6
4
 
7
5
  require 'glue/logger'
6
+ require 'glue/attribute'
8
7
  require 'glue/property'
9
8
  require 'glue/array'
10
9
  require 'glue/hash'
11
10
  require 'glue/time'
12
11
  require 'glue/pool'
13
12
 
14
- # = Og
15
- #
16
13
  # Og (ObjectGraph) is an efficient, yet simple Object-Relational
17
14
  # mapping library.
18
15
  #
@@ -36,7 +33,7 @@ require 'glue/pool'
36
33
  # + Works safely as part of distributed application.
37
34
  # + Simple implementation.
38
35
  #
39
- # === Meta language
36
+ # == Meta language
40
37
  #
41
38
  # primary_key :pid (NOT IMPLEMENTED)
42
39
  # name_key :name (NOT IMPLEMENTED)
@@ -45,7 +42,7 @@ require 'glue/pool'
45
42
  # many_to_many Role, :roles
46
43
  # sql_index :pid
47
44
  #
48
- # === Design
45
+ # == Design
49
46
  #
50
47
  # Keep the main classes backend agnostic.
51
48
  #--
@@ -69,7 +66,7 @@ require 'glue/pool'
69
66
  # The og.xxx methods are more flexible and allow you to use
70
67
  # multiple databases for example.
71
68
  #
72
- # === Managed Objects Lifecycle Callbacks
69
+ # == Managed Objects Lifecycle Callbacks
73
70
  #
74
71
  # * og_pre_insert
75
72
  # * og_post_insert
@@ -82,53 +79,58 @@ require 'glue/pool'
82
79
  # A class level callback is used for delete because typically you call
83
80
  # delete with an oid and not an object to avoid a deserialization.
84
81
  #
85
- # === Future
82
+ # == Future
86
83
  #
87
84
  # * Support prepared statements (pgsql)
88
85
  # * Support stored procedures (pgsql)
89
86
  # * Support caching.
90
87
  # * Deserialize to OpenStruct.
91
88
  # * Better documentation.
92
- #
89
+
93
90
  class Og
94
- class << self
95
- # If true, only allow reading from the database. Usefull
96
- # for maintainance.
97
- attr_accessor :read_only_mode
98
-
99
- # If true, the library automatically 'enchants' managed classes.
100
- # In enchant mode, special db aware methods are added to
101
- # managed classes and instances.
102
- attr_accessor :enchant_managed_classes
103
-
104
- # If true, use Ruby's advanced introspection capabilities to
105
- # automatically manage classes tha define properties.
106
- attr_accessor :auto_manage_classes
107
91
 
108
- # If true, automatically include the Og meta-language into Module.
109
- attr_accessor :include_meta_language
110
-
111
- # Attach the following prefix to all generated SQL table names.
112
- # Usefull on hosting scenarios where you have to run multiple
113
- # web applications/sites on a single database.
114
- attr_accessor :table_prefix
115
-
116
- # The active database. Og allows you to access multiple
117
- # databases from a single application.
118
- attr_accessor :db
119
-
120
- def use(db)
121
- @db = db
122
- @db.get_connection
123
- end
124
- end
92
+ # If true, only allow reading from the database. Usefull
93
+ # for maintainance.
94
+
95
+ cattr_accessor :read_only_mode, false
96
+
97
+ # If true, the library automatically 'enchants' managed classes.
98
+ # In enchant mode, special db aware methods are added to
99
+ # managed classes and instances.
100
+
101
+ cattr_accessor :enchant_managed_classes, true
102
+
103
+ # If true, use Ruby's advanced introspection capabilities to
104
+ # automatically manage classes tha define properties.
105
+
106
+ cattr_accessor :auto_manage_classes, true
107
+
108
+ # If true, automatically include the Og meta-language into Module.
109
+ #
110
+ # By default this is FALSE, to avoid polution of the Module object.
111
+ # However if you include a prop_accessor or a managed Mixin in your
112
+ # object MetaLanguage gets automatically extended in the class.
113
+
114
+ cattr_accessor :include_meta_language, true
115
+
116
+ # Attach the following prefix to all generated SQL table names.
117
+ # Usefull on hosting scenarios where you have to run multiple
118
+ # web applications/sites on a single database.
125
119
 
126
- # set default options:
127
- self.read_only_mode = false
128
- self.enchant_managed_classes = true
129
- self.auto_manage_classes = true
130
- self.include_meta_language = true
131
- self.table_prefix = nil
120
+ cattr_accessor :table_prefix, nil
121
+
122
+ # The active database. Og allows you to access multiple
123
+ # databases from a single application.
124
+
125
+ cattr_accessor :db
126
+
127
+ # Set the active database.
128
+
129
+ def self.use(db)
130
+ @@db = db
131
+ @@db.get_connection
132
+ end
133
+
132
134
  end
133
135
 
134
136
  # gmosx: leave this here.
@@ -137,22 +139,18 @@ require 'og/meta'
137
139
 
138
140
  class Og
139
141
 
140
- # = Unmanageable
141
- #
142
142
  # Marker module. If included this in a class, the Og automanager
143
143
  # ignores this class.
144
- #
144
+
145
145
  module Unmanageable; end
146
146
 
147
- # = Database
148
- #
149
147
  # Encapsulates an Og Database.
150
- #
148
+
151
149
  class Database
152
150
  include Og::Enchant
153
151
 
154
152
  # Managed class metadata
155
- #
153
+
156
154
  class ManagedClassMeta
157
155
  # The managed class.
158
156
  attr_accessor :klass
@@ -167,16 +165,19 @@ class Database
167
165
  end
168
166
 
169
167
  # hash of configuration options.
168
+
170
169
  attr_accessor :config
171
170
 
172
171
  # Pool of connections to the backend.
172
+
173
173
  attr_accessor :connection_pool
174
174
 
175
175
  # Managed classes.
176
+
176
177
  attr_accessor :managed_classes
177
178
 
178
179
  # Initialize the database interface.
179
- #
180
+
180
181
  def initialize(config)
181
182
  @config = config
182
183
 
@@ -199,7 +200,7 @@ class Database
199
200
 
200
201
  # gmosx, FIXME: this automanage code is not elegant and slow
201
202
  # should probably recode this, along with glue/property.rb
202
- #
203
+
203
204
  if Og.auto_manage_classes
204
205
  # automatically manage classes with properties and metadata.
205
206
  # gmosx: Any idea how to optimize this?
@@ -219,7 +220,7 @@ class Database
219
220
  end
220
221
 
221
222
  # Shutdown the database interface.
222
- #
223
+
223
224
  def shutdown
224
225
  for con in @connection_pool
225
226
  con.close()
@@ -229,7 +230,7 @@ class Database
229
230
 
230
231
  # Get a connection from the pool to access the database.
231
232
  # Stores the connection in a thread-local variable.
232
- #
233
+
233
234
  def get_connection
234
235
  thread = Thread.current
235
236
 
@@ -243,7 +244,7 @@ class Database
243
244
  alias_method :connection, :get_connection
244
245
 
245
246
  # Restore an unused connection to the pool.
246
- #
247
+
247
248
  def put_connection
248
249
  thread = Thread.current
249
250
 
@@ -254,7 +255,7 @@ class Database
254
255
  end
255
256
 
256
257
  # Utility method, automatically restores a connection to the pool.
257
- #
258
+
258
259
  def connect(deserialize = nil, &block)
259
260
  result = nil
260
261
 
@@ -275,7 +276,7 @@ class Database
275
276
 
276
277
 
277
278
  # Register a standard Ruby class as managed.
278
- #
279
+
279
280
  def manage(klass)
280
281
  return if managed?(klass) or klass.ancestors.include?(Og::Unmanageable)
281
282
 
@@ -289,7 +290,7 @@ class Database
289
290
  end
290
291
 
291
292
  # Helper method to set multiple managed classes.
292
- #
293
+
293
294
  def manage_classes(*klasses)
294
295
  for klass in klasses
295
296
  manage(klass)
@@ -297,7 +298,7 @@ class Database
297
298
  end
298
299
 
299
300
  # Stop managing a Ruby class
300
- #
301
+
301
302
  def unmanage(klass)
302
303
  @managed_classes.delete(klass)
303
304
  end
@@ -309,7 +310,7 @@ class Database
309
310
  end
310
311
 
311
312
  # Add standard og functionality to the class
312
- #
313
+
313
314
  def convert(klass)
314
315
  # Grab backend class
315
316
  backend = @config[:backend]
@@ -393,4 +394,4 @@ class Database
393
394
  end
394
395
  end
395
396
 
396
- end # namespace
397
+ end