og 0.13.0 → 0.14.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.
data/CHANGELOG CHANGED
@@ -1,5 +1,119 @@
1
+ 28-03-2005 George Moschovitis <gm@navel.gr>
2
+
3
+ * test/og/mixins/tc_list.rb: implemented tests.
4
+
5
+ * lib/og/connection.rb (#delete): passs obj_or_oid to the callback.
6
+
7
+ * lib/og/enchant.rb (#update/#update_all): fixed stupid bug.
8
+ (#delete!): pass self.
9
+
10
+ * lib/og/mixins/list.rb: set the position property for the
11
+ enchanted object,
12
+ (#move_to_top): fixed.
13
+ (#increment_position_of*/dec*): fixed,
14
+ fixed scope interpolation.
15
+
16
+ 27-03-2005 George Moschovitis <gm@navel.gr>
17
+
18
+ * lib/og/database.rb: wrap transaction.
19
+
20
+ * lib/og/enchant.rb (#each): fixed.
21
+
22
+ * lib/og/meta.rb (#has_many): added :order and :sql options.
23
+ include Og::List by default to Module.
24
+
25
+ * lib/og/mixins/list.rb: added some code,
26
+ (#decrement_position_of..): added,
27
+ add callbacks to enchanted object,
28
+ made compatible with meta,
29
+ use pre_insert,
30
+ many, many small fixes to make this work.
31
+
32
+ * test/og/mixins/tc_list.rb: introduced.
33
+
34
+ 24-03-2005 George Moschovitis <gm@navel.gr>
35
+
36
+ * lib/og/adapters/*: rescue binding require. [drak]
37
+
38
+ * lib/og/enchant.rb: fixed many bugs to make this run again.
39
+
40
+ 23-03-2005 George Moschovitis <gm@navel.gr>
41
+
42
+ * lib/og/testing: introduced.
43
+
44
+ * test/mixins/tc_list.rb: introduced.
45
+
46
+ * test/mixins: introduced.
47
+
48
+ * lib/og/mixins/list.rb: introduced.
49
+ (#move_higher/lower): implemented.
50
+ (#increment/decrement_position): implemented.
51
+ implemented many methods.
52
+
53
+ * INSTALL: updated, added ref to required libs. [dyoder]
54
+
55
+ * lib/og/adapter.rb (SqlException): introduced.
56
+
57
+ * lib/og/connection.rb (#handle_db_exception): factored out,
58
+ update_property alias.
59
+
60
+ * lib/og/adapters/* (#exec/query): return :error on error
61
+ and add support for raising exceptions,
62
+ use handle_db_exception,
63
+ added get_row helper method.
64
+
65
+ * lib/og.rb: added raise_db_exceptions flag. [mneumann]
66
+
67
+ * test/tc_og.rb: added tests.
68
+
69
+ * lib/og/enchant.rb (#reload): implemented [mneumann],
70
+ update_property alias.
71
+ (#set_property): introduced.
72
+ (#update_all): implemented.
73
+ (#transaction): implemented.
74
+
75
+ * lib/og/adapter.rb (#og_read): tupple defualt is 0.
76
+
77
+ 22-03-2005 George Moschovitis <gm@navel.gr>
78
+
79
+ * lib/og/adapter.rb (#create_db): set create_schema = true. [danjover]
80
+
81
+ * lib/og/meta.rb (#has_many): accepts tree option.
82
+
83
+ * lib/og/tree.rb (TreeTraversal): introduced.
84
+
85
+ * test/og/tc_tree.rb: introduced.
86
+
87
+ 21-03-2005 George Moschovitis <gm@navel.gr>
88
+
89
+ * lib/og/tree.rb: Introduced Tree mixin.
90
+
91
+ 20-03-2005 George Moschovitis <gm@navel.gr>
92
+
93
+ * lib/og/meta.rb: experimented with const_missing hack.
94
+
95
+ * test/og/tc_automanage.rb: implemented.
96
+
97
+ * lib/og/database.rb (#auto_manage_classes): added, to automanage
98
+ classes defined after Database definition. [james_b]
99
+
100
+ 19-03-2005 George Moschovitis <gm@navel.gr>
101
+
102
+ * lib/og/database.rb (#initialize): handle drop_db config parameter.
103
+
104
+ * lib/og/tree.rb: implemented nested intervals tree traversal
105
+ helper methods,
106
+ fix in parent,
107
+ yeah! the hierarchy is stored.
108
+
109
+ 18-03-2005 George Moschovitis <gm@navel.gr>
110
+
111
+ * Research about nested interval sql tree traversal.
112
+
1
113
  17-03-2005 George Moschovitis <gm@navel.gr>
2
114
 
115
+ * --- VERSION 0.13.0 ---
116
+
3
117
  * Rakefile: updated.
4
118
 
5
119
  * test/*: changes to make the tests pass again.
data/INSTALL CHANGED
@@ -42,6 +42,7 @@ a standard installation script is provided.
42
42
  This installation script also installs some vendor libraries
43
43
  that you possibly have allready installed. Use with caution.
44
44
 
45
+
45
46
  = Manual installation.
46
47
 
47
48
  Uncompress your distribution (Unix example):
@@ -54,3 +55,24 @@ Put the libray dir in the Ruby path (Unix example):
54
55
  $ export RUBYOPT='-I path/to/og/lib'
55
56
 
56
57
 
58
+ = Additional libraries
59
+
60
+ Og uses a number of additional libraries. RubyGems
61
+ installs most of them, but here is the complete
62
+ list for your reference:
63
+
64
+ * Ruby-psql
65
+ http://www.postgresql.jp/interfaces/ruby/archive/ruby-postgres-0.7.1.tar.gz
66
+ Ruby interface to the PostgreSQL RDBMS.
67
+
68
+ * Ruby-mysql
69
+ http://tmtm.org/ja/ruby/mysql/README_en.html
70
+ Ruby interface to the MySQL RDBMS.
71
+
72
+ * PostgreSQL
73
+ http://www.postgres.org
74
+ Used for the Database Backend.
75
+
76
+ * MySQL
77
+ http://www.mysql.org
78
+ Used for the Database Backend.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = Og 0.13.0
1
+ = Og 0.14.0
2
2
 
3
3
  Og (ObjectGraph) is a powerfull object-relational mapping library. Og provides
4
4
  transparent serialization of object graphs to a RDBMS
data/Rakefile CHANGED
@@ -30,14 +30,14 @@ end
30
30
  spec = Gem::Specification.new do |s|
31
31
  s.name = 'og'
32
32
  if File.read('lib/og.rb') =~ /Version\s+=\s+'(\d+\.\d+\.\d+)'/
33
- s.version = $1
33
+ VERSION = s.version = $1
34
34
  else
35
35
  raise 'No version found'
36
36
  end
37
37
  s.summary = 'Og (ObjectGraph)'
38
38
  s.description = 'An efficient and transparent Object-Relational mapping library'
39
39
 
40
- s.add_dependency 'glue', '= 0.13.0'
40
+ s.add_dependency 'glue', "= #{VERSION}"
41
41
  # s.add_dependency 'postgres-pr', '>= 0.3.0'
42
42
  # s.add_dependency 'postgres', '>= 0.7.1'
43
43
  # s.add_dependency 'sqlite3-ruby', '>= 1.0.0'
@@ -1,8 +1,24 @@
1
+ == Version 0.14.0 was released on 18/03/2005.
2
+
3
+ Many many important fixes, and many small additions
4
+ and improvements. Og mixins are introduced with
5
+ an experimental List mixin implementation.
6
+
7
+ Most notable addition:
8
+
9
+ * Support for objects that participate in list
10
+ (ordering/removal etc)
11
+
12
+ * Add useful new enchant methods.
13
+
14
+ * Fixed all user reported bugs.
15
+
16
+
1
17
  == Version 0.13.0 was released on 17/03/2005.
2
18
 
3
19
  A maintenance release.
4
20
 
5
- Most notable additons:
21
+ Most notable additions:
6
22
 
7
23
  * Better separated from Nitro.
8
24
 
data/lib/og.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: og.rb 300 2005-03-16 13:23:10Z gmosx $
3
+ # $Id: og.rb 326 2005-03-28 11:07:17Z gmosx $
4
4
 
5
5
  require 'glue'
6
6
  require 'glue/logger'
@@ -107,7 +107,7 @@ module Og
107
107
 
108
108
  # The version.
109
109
 
110
- Version = '0.13.0'
110
+ Version = '0.14.0'
111
111
 
112
112
  # Library path.
113
113
 
@@ -159,6 +159,12 @@ module Og
159
159
 
160
160
  mattr_accessor :create_schema, true
161
161
 
162
+ # If true raises exceptions on database errors, usefull when
163
+ # debugging. For production environments it should probably be
164
+ # set to false to make the application more fault tolerant.
165
+
166
+ mattr_accessor :raise_db_exceptions, true
167
+
162
168
  # The active database. Og allows you to access multiple
163
169
  # databases from a single application.
164
170
 
@@ -177,7 +183,7 @@ module Og
177
183
  @@db.adapter
178
184
  end
179
185
 
180
- # Marker module. If included this in a class, the Og automanager
186
+ # Marker module. If included in a class, the Og automanager
181
187
  # ignores this class.
182
188
 
183
189
  module Unmanageable; end
@@ -1,6 +1,6 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: adapter.rb 281 2005-03-10 12:24:14Z gmosx $
3
+ # $Id: adapter.rb 323 2005-03-24 09:43:52Z gmosx $
4
4
 
5
5
  require 'yaml'
6
6
  require 'singleton'
@@ -9,6 +9,16 @@ require 'og/connection'
9
9
 
10
10
  module Og
11
11
 
12
+ # Encapsulates a lower lever adapter SQL excpetion.
13
+
14
+ class SqlException < Exception
15
+ attr_accessor :adapter_exception, :sql
16
+
17
+ def initialize(adapter_exception, sql = nil)
18
+ @adapter_exception, @sql = adapter_exception, sql
19
+ end
20
+ end
21
+
12
22
  # An adapter communicates with the backend datastore.
13
23
  # The adapters for all supported datastores extend this
14
24
  # class. Typically, an RDBMS is used to implement a
@@ -115,6 +125,7 @@ class Adapter
115
125
 
116
126
  def create_db(database, user = nil, password = nil)
117
127
  Logger.info "Creating database '#{database}'."
128
+ Og.create_schema = true
118
129
  end
119
130
 
120
131
  # Drop the database.
@@ -500,7 +511,7 @@ class Adapter
500
511
  end
501
512
 
502
513
  klass.class_eval %{
503
- def og_read(res, tuple = nil)
514
+ def og_read(res, tuple = 0)
504
515
  #{pre_cb}
505
516
  #{code.join('; ')}
506
517
  #{post_cb}
@@ -1,8 +1,13 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: mysql.rb 281 2005-03-10 12:24:14Z gmosx $
3
+ # $Id: mysql.rb 326 2005-03-28 11:07:17Z gmosx $
4
4
 
5
- require 'mysql'
5
+ begin
6
+ require 'mysql'
7
+ rescue Object => ex
8
+ Logger.error 'Ruby-Mysql bindings are not installed!'
9
+ Logger.error ex
10
+ end
6
11
 
7
12
  require 'og/adapter'
8
13
  require 'og/connection'
@@ -275,9 +280,7 @@ class MysqlConnection < Connection
275
280
  @store.query_with_result = true
276
281
  return @store.query(sql)
277
282
  rescue => ex
278
- Logger.error "DB error #{ex}, [#{sql}]"
279
- Logger.error ex.backtrace.join("\n")
280
- return nil
283
+ handle_db_exception(ex, sql)
281
284
  end
282
285
  end
283
286
 
@@ -287,8 +290,7 @@ class MysqlConnection < Connection
287
290
  @store.query_with_result = false
288
291
  @store.query(sql)
289
292
  rescue => ex
290
- Logger.error "DB error #{ex}, [#{sql}]"
291
- Logger.error ex.backtrace.join("\n")
293
+ handle_db_exception(ex, sql)
292
294
  end
293
295
  end
294
296
 
@@ -343,6 +345,10 @@ class MysqlConnection < Connection
343
345
  return val
344
346
  end
345
347
 
348
+ def get_row(res)
349
+ res.fetch_row
350
+ end
351
+
346
352
  end
347
353
 
348
354
  end
@@ -1,9 +1,14 @@
1
1
  # * Matt Bowen <matt.bowen@farweststeel.com>
2
2
  # * George Moschovitis <gm@navel.gr>
3
3
  # (c) 2004-2005 Navel, all rights reserved.
4
- # $Id: oracle.rb 281 2005-03-10 12:24:14Z gmosx $
4
+ # $Id: oracle.rb 326 2005-03-28 11:07:17Z gmosx $
5
5
 
6
- require 'oracle'
6
+ begin
7
+ require 'oracle'
8
+ rescue
9
+ Logger.error 'Ruby-Oracle bindings are not installed!'
10
+ Logger.error ex
11
+ end
7
12
 
8
13
  require 'og/adapter'
9
14
  require 'og/connection'
@@ -299,10 +304,7 @@ class OracleConnection < Connection
299
304
  begin
300
305
  return @store.exec(sql)
301
306
  rescue Exception => ex
302
- Logger.error "DB error #{ex}, [#{sql}]"
303
- Logger.error ex.backtrace.join("\n")
304
- raise
305
- # return nil
307
+ handle_db_exception(ex, sql)
306
308
  end
307
309
  end
308
310
 
@@ -311,9 +313,7 @@ class OracleConnection < Connection
311
313
  begin
312
314
  @store.exec(sql)
313
315
  rescue Exception => ex
314
- Logger.error "DB error #{ex}, [#{sql}]"
315
- Logger.error ex.backtrace.join("\n")
316
- raise
316
+ handle_db_exception(ex, sql)
317
317
  end
318
318
  end
319
319
 
@@ -370,6 +370,9 @@ class OracleConnection < Connection
370
370
  return val
371
371
  end
372
372
 
373
+ def get_row(res)
374
+ res.fetch
375
+ end
373
376
  end
374
377
 
375
378
  end
@@ -1,8 +1,13 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: psql.rb 281 2005-03-10 12:24:14Z gmosx $
3
+ # $Id: psql.rb 326 2005-03-28 11:07:17Z gmosx $
4
4
 
5
- require 'postgres'
5
+ begin
6
+ require 'postgres'
7
+ rescue Object => ex
8
+ Logger.error 'Ruby-Postgresql bindings are not installed!'
9
+ Logger.error ex
10
+ end
6
11
 
7
12
  require 'og/adapter'
8
13
  require 'og/connection'
@@ -219,9 +224,7 @@ class PsqlConnection < Connection
219
224
  begin
220
225
  return @store.exec(sql)
221
226
  rescue => ex
222
- Logger.error "DB error #{ex}, [#{sql}]"
223
- Logger.error ex.backtrace.join("\n")
224
- return nil
227
+ handle_db_exception(ex, sql)
225
228
  end
226
229
  end
227
230
 
@@ -230,8 +233,7 @@ class PsqlConnection < Connection
230
233
  begin
231
234
  @store.exec(sql).clear
232
235
  rescue => ex
233
- Logger.error "DB error #{ex}, [#{sql}]"
234
- Logger.error ex.backtrace.join("\n")
236
+ handle_db_exception(ex, sql)
235
237
  end
236
238
  end
237
239
 
@@ -1,8 +1,14 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: sqlite.rb 281 2005-03-10 12:24:14Z gmosx $
3
+ # $Id: sqlite.rb 326 2005-03-28 11:07:17Z gmosx $
4
+
5
+ begin
6
+ require 'sqlite3'
7
+ rescue Object => ex
8
+ Logger.error 'Ruby-Sqlite3 bindings are not installed!'
9
+ Logger.error ex
10
+ end
4
11
 
5
- require 'sqlite3'
6
12
  require 'fileutils'
7
13
 
8
14
  require 'og/adapter'
@@ -193,9 +199,7 @@ class SqliteConnection < Connection
193
199
  begin
194
200
  return @store.query(sql)
195
201
  rescue => ex
196
- Logger.error "DB error #{ex}, [#{sql}]"
197
- Logger.error ex.backtrace.join("\n")
198
- return nil
202
+ handle_db_exception(ex, sql)
199
203
  end
200
204
  end
201
205
 
@@ -204,8 +208,7 @@ class SqliteConnection < Connection
204
208
  begin
205
209
  @store.query(sql).close
206
210
  rescue => ex
207
- Logger.error "DB error #{ex}, [#{sql}]"
208
- Logger.error ex.backtrace.join("\n")
211
+ handle_db_exception(ex, sql)
209
212
  end
210
213
  end
211
214
 
@@ -257,6 +260,10 @@ class SqliteConnection < Connection
257
260
  return val
258
261
  end
259
262
 
263
+ def get_row(res)
264
+ res.next
265
+ end
266
+
260
267
  end
261
268
 
262
269
  end