og 0.31.0 → 0.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/doc/{AUTHORS → CONTRIBUTORS} +26 -10
  2. data/doc/LICENSE +2 -3
  3. data/doc/RELEASES +56 -7
  4. data/doc/tutorial.txt +15 -15
  5. data/lib/glue/cacheable.rb +2 -5
  6. data/lib/glue/hierarchical.rb +1 -4
  7. data/lib/glue/optimistic_locking.rb +0 -2
  8. data/lib/glue/orderable.rb +79 -75
  9. data/lib/glue/revisable.rb +19 -24
  10. data/lib/glue/searchable.rb +0 -2
  11. data/lib/glue/taggable.rb +31 -29
  12. data/lib/glue/timestamped.rb +4 -2
  13. data/lib/og.rb +50 -29
  14. data/lib/og/adapter.rb +19 -0
  15. data/lib/og/adapter/mysql.rb +212 -0
  16. data/lib/og/adapter/mysql/override.rb +34 -0
  17. data/lib/og/adapter/mysql/script.rb +15 -0
  18. data/lib/og/adapter/mysql/utils.rb +40 -0
  19. data/lib/og/adapter/postgresql.rb +231 -0
  20. data/lib/og/adapter/postgresql/override.rb +117 -0
  21. data/lib/og/adapter/postgresql/script.rb +15 -0
  22. data/lib/og/adapter/postgresql/utils.rb +35 -0
  23. data/lib/og/adapter/sqlite.rb +132 -0
  24. data/lib/og/adapter/sqlite/override.rb +33 -0
  25. data/lib/og/adapter/sqlite/script.rb +15 -0
  26. data/lib/og/collection.rb +35 -7
  27. data/lib/og/{evolution.rb → dump.rb} +4 -5
  28. data/lib/og/entity.rb +102 -173
  29. data/lib/og/entity/clone.rb +119 -0
  30. data/lib/og/errors.rb +0 -2
  31. data/lib/og/manager.rb +85 -37
  32. data/lib/og/relation.rb +52 -34
  33. data/lib/og/relation/belongs_to.rb +0 -2
  34. data/lib/og/relation/has_many.rb +27 -4
  35. data/lib/og/relation/joins_many.rb +41 -14
  36. data/lib/og/relation/many_to_many.rb +10 -0
  37. data/lib/og/relation/refers_to.rb +22 -5
  38. data/lib/og/store.rb +80 -86
  39. data/lib/og/store/sql.rb +710 -713
  40. data/lib/og/store/sql/evolution.rb +119 -0
  41. data/lib/og/store/sql/join.rb +155 -0
  42. data/lib/og/store/sql/utils.rb +149 -0
  43. data/lib/og/test/assertions.rb +1 -3
  44. data/lib/og/test/testcase.rb +0 -2
  45. data/lib/og/types.rb +2 -5
  46. data/lib/og/validation.rb +6 -9
  47. data/test/{og/mixin → glue}/tc_hierarchical.rb +3 -13
  48. data/test/glue/tc_og_paginate.rb +47 -0
  49. data/test/{og/mixin → glue}/tc_optimistic_locking.rb +2 -12
  50. data/test/{og/mixin → glue}/tc_orderable.rb +15 -23
  51. data/test/glue/tc_orderable2.rb +47 -0
  52. data/test/glue/tc_revisable.rb +3 -3
  53. data/test/{og/mixin → glue}/tc_taggable.rb +20 -10
  54. data/test/{og/mixin → glue}/tc_timestamped.rb +2 -12
  55. data/test/glue/tc_webfile.rb +36 -0
  56. data/test/og/CONFIG.rb +8 -11
  57. data/test/og/multi_validations_model.rb +14 -0
  58. data/test/og/store/tc_filesys.rb +3 -1
  59. data/test/og/store/tc_kirby.rb +16 -13
  60. data/test/og/store/tc_sti.rb +11 -11
  61. data/test/og/store/tc_sti2.rb +79 -0
  62. data/test/og/tc_build.rb +41 -0
  63. data/test/og/tc_cacheable.rb +3 -2
  64. data/test/og/tc_has_many.rb +96 -0
  65. data/test/og/tc_inheritance.rb +6 -4
  66. data/test/og/tc_joins_many.rb +93 -0
  67. data/test/og/tc_multi_validations.rb +5 -7
  68. data/test/og/tc_multiple.rb +7 -6
  69. data/test/og/tc_override.rb +13 -7
  70. data/test/og/tc_primary_key.rb +30 -0
  71. data/test/og/tc_relation.rb +8 -14
  72. data/test/og/tc_reldelete.rb +163 -0
  73. data/test/og/tc_reverse.rb +17 -14
  74. data/test/og/tc_scoped.rb +3 -11
  75. data/test/og/tc_setup.rb +13 -11
  76. data/test/og/tc_store.rb +21 -28
  77. data/test/og/tc_validation2.rb +2 -2
  78. data/test/og/tc_validation_loop.rb +17 -15
  79. metadata +109 -103
  80. data/INSTALL +0 -91
  81. data/ProjectInfo +0 -51
  82. data/README +0 -177
  83. data/doc/config.txt +0 -28
  84. data/examples/README +0 -23
  85. data/examples/mysql_to_psql.rb +0 -71
  86. data/examples/run.rb +0 -271
  87. data/lib/glue/tree.rb +0 -218
  88. data/lib/og/store/alpha/filesys.rb +0 -110
  89. data/lib/og/store/alpha/memory.rb +0 -295
  90. data/lib/og/store/alpha/sqlserver.rb +0 -256
  91. data/lib/og/store/kirby.rb +0 -490
  92. data/lib/og/store/mysql.rb +0 -415
  93. data/lib/og/store/psql.rb +0 -875
  94. data/lib/og/store/sqlite.rb +0 -348
  95. data/lib/og/store/sqlite2.rb +0 -241
  96. data/setup.rb +0 -1585
  97. data/test/og/tc_sti_find.rb +0 -35
@@ -69,21 +69,16 @@ class TCOgStore < Test::Unit::TestCase # :nodoc: all
69
69
  $og1.manage_classes(User, Category, Article, NewArticle, Comment, Bugger)
70
70
 
71
71
  def setup
72
- @og = $og1
72
+ @og = $og1.store
73
73
  end
74
74
 
75
- def test_og
76
- features_test
77
- # conversions_test
78
- end
79
-
80
- def features_test
75
+ def test_og_features
81
76
  u = User.create('gmosx')
82
77
 
83
78
  a1 = Article.new('Article 1')
84
- @og.store.save(a1)
79
+ @og.save(a1)
85
80
 
86
- a2 = @og.store.load(1, Article)
81
+ a2 = @og.load(1, Article)
87
82
 
88
83
  assert_equal a1.body, a2.body
89
84
 
@@ -127,10 +122,10 @@ class TCOgStore < Test::Unit::TestCase # :nodoc: all
127
122
 
128
123
  a0 = Article.one(:condition => "body='Article 3'")
129
124
  assert_equal 'Article 3', a0.body
130
-
131
- @og.store.delete(a3)
132
125
 
133
- assert @og.store.load(1, Article)
126
+ @og.delete(a3)
127
+
128
+ assert @og.load(1, Article)
134
129
  assert !Article[2]
135
130
  assert Article.load(1)
136
131
 
@@ -164,8 +159,8 @@ class TCOgStore < Test::Unit::TestCase # :nodoc: all
164
159
 
165
160
  # count
166
161
 
167
- assert_equal 4, @og.store.count(:class => Comment)
168
- assert_equal 1, @og.store.count(:class => Comment, :condition => "body = 'Comment 4'")
162
+ assert_equal 4, @og.count(:class => Comment)
163
+ assert_equal 1, @og.count(:class => Comment, :condition => "body = 'Comment 4'")
169
164
  assert_equal 4, Comment.count
170
165
  assert_equal 1, Comment.count(:condition => "body = 'Comment 2'")
171
166
 
@@ -220,7 +215,7 @@ class TCOgStore < Test::Unit::TestCase # :nodoc: all
220
215
  a4.comments.delete(c1)
221
216
  assert_equal 3, a4.comments.size
222
217
 
223
- assert_equal 3, @og.store.count(:class => Comment)
218
+ assert_equal 3, @og.count(:class => Comment)
224
219
 
225
220
  a4.comments.delete_all
226
221
  assert_equal 0, a4.comments.size
@@ -286,25 +281,23 @@ class TCOgStore < Test::Unit::TestCase # :nodoc: all
286
281
  # assert_equal 1, $schema_after
287
282
  end
288
283
 
289
- def conversions_test
290
- store = @og.store
291
-
292
- assert_equal '13', store.quote(13)
293
- assert_equal '13.23', store.quote(13.23)
294
- assert_equal "'can''t quote'", store.quote("can't quote")
284
+ def test_og_conversions
285
+ assert_equal '13', @og.quote(13)
286
+ assert_equal '13.23', @og.quote(13.23)
287
+ assert_match /'can[\\']'t quote'/, @og.quote("can't quote")
295
288
 
296
289
  t = Time.now
297
290
 
298
- assert_equal t.day, store.parse_timestamp(store.timestamp(t)).day
299
- assert_equal t.year, store.parse_timestamp(store.timestamp(t)).year
300
- assert_equal t.month, store.parse_timestamp(store.timestamp(t)).month
301
- assert_equal t.hour, store.parse_timestamp(store.timestamp(t)).hour
302
- assert_equal t.min, store.parse_timestamp(store.timestamp(t)).min
303
- assert_equal t.sec, store.parse_timestamp(store.timestamp(t)).sec
291
+ assert_equal t.day, @og.parse_timestamp(@og.timestamp(t)).day
292
+ assert_equal t.year, @og.parse_timestamp(@og.timestamp(t)).year
293
+ assert_equal t.month, @og.parse_timestamp(@og.timestamp(t)).month
294
+ assert_equal t.hour, @og.parse_timestamp(@og.timestamp(t)).hour
295
+ assert_equal t.min, @og.parse_timestamp(@og.timestamp(t)).min
296
+ assert_equal t.sec, @og.parse_timestamp(@og.timestamp(t)).sec
304
297
 
305
298
  d = Date.new
306
299
 
307
- assert_equal d, store.parse_date(store.date(d))
300
+ assert_equal d, @og.parse_date(@og.date(d))
308
301
  end
309
302
 
310
303
  end
@@ -53,12 +53,12 @@ module UnitTestClasses
53
53
  property :prop, Fixnum
54
54
  validate_numeric :prop, :integer => true
55
55
 
56
- prop_accessor :prop2, Float
56
+ attr_accessor :prop2, Float
57
57
  validate_numeric :prop2
58
58
  end
59
59
 
60
60
  class RelatedClass
61
- prop_accessor :test, String
61
+ attr_accessor :test, String
62
62
  belongs_to :relation_validation, RelationValidation
63
63
  end
64
64
 
@@ -1,33 +1,35 @@
1
- =begin
1
+ require File.join(File.dirname(__FILE__), 'CONFIG.rb')
2
+
2
3
  require 'test/unit'
3
4
 
4
5
  require 'rubygems'
5
-
6
6
  require 'og'
7
7
 
8
- class ManagedClass
9
- prop_accessor :thing
10
-
11
- validate_unique :thing
12
- end
13
-
14
8
  class TC_Loop < Test::Unit::TestCase
9
+ class ManagedClass
10
+ attr_accessor :thing, String
11
+
12
+ validate_unique :thing
13
+ end
14
+
15
+ $og1.manage_class ManagedClass
16
+
15
17
  def setup
16
18
  @thing_1 = ManagedClass.new
17
19
  @thing_1.thing = 'thing'
18
20
  @thing_1.save
19
21
  end
22
+
23
+ def teardown
24
+ ManagedClass.delete_all
25
+ end
20
26
 
21
27
  def test_loop
22
28
  thing_2 = ManagedClass.new
23
29
  thing_2.thing = @thing_1.thing
24
- # assert_raises(NoMethodError) {
25
- # thing_2.valid?
26
- # assert thing_2.errors
27
- # }
30
+
31
+ thing_2.valid?
32
+ assert thing_2.errors
28
33
  end
29
34
 
30
35
  end
31
-
32
- # * Bryan Soto <bryan.a.soto@gmail.com>
33
- =end
metadata CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: og
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.31.0
7
- date: 2006-07-20 00:00:00 -07:00
8
- summary: State of the art object-relational mapping system.
6
+ version: 0.40.0
7
+ date: 2006-11-13 10:56:16 +02:00
8
+ summary: State of the art object-relational mapping system
9
9
  require_paths:
10
10
  - lib
11
- email: gm@navel.gr
11
+ email:
12
12
  homepage: http://www.nitroproject.org
13
13
  rubyforge_project:
14
- description:
14
+ description: Object Graph (Og) is a state of the art ORM system. Og serializes standard Ruby objects to Mysql, Postgres, Sqlite, KirbyBase, Filesystem and more.
15
15
  autorequire:
16
16
  default_executable:
17
17
  bindir: bin
@@ -27,118 +27,124 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message:
29
29
  authors:
30
- - George Moschovitis
30
+ - George K. Moschovitis
31
31
  files:
32
- - doc
33
- - lib
34
- - test
35
- - .
36
- - examples
37
- - lib/og
38
32
  - lib/glue
33
+ - lib/og
34
+ - lib/og.rb
35
+ - lib/glue/cacheable.rb
36
+ - lib/glue/hierarchical.rb
37
+ - lib/glue/optimistic_locking.rb
38
+ - lib/glue/orderable.rb
39
+ - lib/glue/revisable.rb
40
+ - lib/glue/searchable.rb
41
+ - lib/glue/taggable.rb
42
+ - lib/glue/timestamped.rb
43
+ - lib/og/adapter
44
+ - lib/og/adapter.rb
45
+ - lib/og/collection.rb
46
+ - lib/og/dump.rb
47
+ - lib/og/entity
48
+ - lib/og/entity.rb
49
+ - lib/og/errors.rb
39
50
  - lib/og/ez
40
- - lib/og/test
51
+ - lib/og/manager.rb
52
+ - lib/og/markers.rb
41
53
  - lib/og/relation
54
+ - lib/og/relation.rb
42
55
  - lib/og/store
56
+ - lib/og/store.rb
57
+ - lib/og/test
58
+ - lib/og/test.rb
59
+ - lib/og/types.rb
60
+ - lib/og/validation.rb
43
61
  - lib/og/vendor
44
- - lib/og/store/alpha
45
- - test/og
46
- - test/glue
47
- - test/og/mixin
48
- - test/og/store
49
- - test/og/tc_multiple.rb
50
- - test/og/mixin/tc_timestamped.rb
51
- - test/og/tc_validation2.rb
52
- - test/og/tc_store.rb
53
- - test/og/tc_types.rb
54
- - doc/CHANGELOG.1
55
- - lib/og/test/testcase.rb
56
- - lib/og/markers.rb
57
- - lib/og/relation/refers_to.rb
58
- - test/og/store/tc_filesys.rb
59
- - test/og/tc_inheritance.rb
60
- - doc/RELEASES
61
- - test/og/tc_cacheable.rb
62
- - lib/og/store/alpha/sqlserver.rb
63
- - INSTALL
64
- - test/og/tc_relation.rb
65
- - examples/README
66
- - lib/og/relation/has_many.rb
67
- - lib/glue/optimistic_locking.rb
68
- - test/og/tc_scoped.rb
69
- - examples/run.rb
70
- - test/og/multi_validations_model.rb
62
+ - lib/og/adapter/mysql
63
+ - lib/og/adapter/mysql.rb
64
+ - lib/og/adapter/postgresql
65
+ - lib/og/adapter/postgresql.rb
66
+ - lib/og/adapter/sqlite
67
+ - lib/og/adapter/sqlite.rb
68
+ - lib/og/adapter/mysql/override.rb
69
+ - lib/og/adapter/mysql/script.rb
70
+ - lib/og/adapter/mysql/utils.rb
71
+ - lib/og/adapter/postgresql/override.rb
72
+ - lib/og/adapter/postgresql/script.rb
73
+ - lib/og/adapter/postgresql/utils.rb
74
+ - lib/og/adapter/sqlite/override.rb
75
+ - lib/og/adapter/sqlite/script.rb
76
+ - lib/og/entity/clone.rb
77
+ - lib/og/ez/clause.rb
71
78
  - lib/og/ez/condition.rb
72
- - lib/og/store/psql.rb
73
- - lib/og/relation.rb
74
- - lib/og/validation.rb
75
- - test/og/tc_multi_validations.rb
76
- - lib/og/vendor/README
77
- - test/og/tc_resolve.rb
78
- - doc/LICENSE
79
- - test/og/tc_validation_loop.rb
80
- - lib/og/collection.rb
81
- - lib/og/store/sqlite2.rb
82
- - test/og/tc_join.rb
83
- - lib/glue/hierarchical.rb
84
- - lib/og/store/mysql.rb
85
- - lib/og/relation/joins_many.rb
86
- - lib/og/store/kirby.rb
87
- - test/og/tc_select.rb
88
- - doc/config.txt
89
- - lib/og/test.rb
90
- - lib/og/evolution.rb
91
79
  - lib/og/relation/all.rb
92
- - lib/og/relation/has_one.rb
93
- - lib/og/store/alpha/filesys.rb
94
80
  - lib/og/relation/belongs_to.rb
95
- - test/og/mixin/tc_hierarchical.rb
96
- - test/og/tc_reverse.rb
97
- - test/og/tc_finder.rb
98
- - test/og/tc_delete_all.rb
99
- - doc/tutorial.txt
100
- - test/glue/tc_revisable.rb
101
- - test/og/tc_setup.rb
102
- - test/og/tc_override.rb
103
- - doc/AUTHORS
104
- - README
105
- - lib/glue/taggable.rb
106
- - test/og/store/tc_sti.rb
107
- - lib/og/errors.rb
108
- - test/og/tc_polymorphic.rb
109
- - lib/glue/timestamped.rb
110
- - lib/og/entity.rb
111
- - setup.rb
112
- - test/og/tc_inheritance2.rb
113
- - ProjectInfo
114
- - lib/glue/tree.rb
81
+ - lib/og/relation/has_many.rb
82
+ - lib/og/relation/has_one.rb
83
+ - lib/og/relation/joins_many.rb
115
84
  - lib/og/relation/many_to_many.rb
85
+ - lib/og/relation/refers_to.rb
86
+ - lib/og/store/sql
116
87
  - lib/og/store/sql.rb
117
- - lib/glue/cacheable.rb
118
- - examples/mysql_to_psql.rb
119
- - test/og/store/tc_kirby.rb
120
- - test/og/tc_aggregations_calculations.rb
121
- - lib/og/vendor/mysql.rb
122
- - test/og/tc_camel_case_join.rb
123
- - lib/og/store.rb
124
- - lib/og/types.rb
125
- - test/og/mixin/tc_taggable.rb
126
- - test/og/mixin/tc_optimistic_locking.rb
127
- - test/og/tc_sti_find.rb
128
- - lib/og/manager.rb
88
+ - lib/og/store/sql/evolution.rb
89
+ - lib/og/store/sql/join.rb
90
+ - lib/og/store/sql/utils.rb
129
91
  - lib/og/test/assertions.rb
130
- - lib/glue/orderable.rb
92
+ - lib/og/test/testcase.rb
93
+ - lib/og/vendor/mysql.rb
94
+ - lib/og/vendor/README
95
+ - test/glue
96
+ - test/og
97
+ - test/glue/tc_hierarchical.rb
98
+ - test/glue/tc_og_paginate.rb
99
+ - test/glue/tc_optimistic_locking.rb
100
+ - test/glue/tc_orderable2.rb
101
+ - test/glue/tc_orderable.rb
102
+ - test/glue/tc_revisable.rb
103
+ - test/glue/tc_taggable.rb
104
+ - test/glue/tc_timestamped.rb
105
+ - test/glue/tc_webfile.rb
131
106
  - test/og/CONFIG.rb
132
- - lib/glue/revisable.rb
133
- - test/og/mixin/tc_orderable.rb
107
+ - test/og/multi_validations_model.rb
108
+ - test/og/store
134
109
  - test/og/tc_accumulator.rb
135
- - lib/og.rb
136
- - lib/glue/searchable.rb
137
- - test/og/tc_validation.rb
110
+ - test/og/tc_aggregations_calculations.rb
111
+ - test/og/tc_build.rb
112
+ - test/og/tc_cacheable.rb
113
+ - test/og/tc_camel_case_join.rb
114
+ - test/og/tc_delete_all.rb
138
115
  - test/og/tc_ez.rb
139
- - lib/og/store/alpha/memory.rb
140
- - lib/og/ez/clause.rb
141
- - lib/og/store/sqlite.rb
116
+ - test/og/tc_finder.rb
117
+ - test/og/tc_has_many.rb
118
+ - test/og/tc_inheritance2.rb
119
+ - test/og/tc_inheritance.rb
120
+ - test/og/tc_join.rb
121
+ - test/og/tc_joins_many.rb
122
+ - test/og/tc_multi_validations.rb
123
+ - test/og/tc_multiple.rb
124
+ - test/og/tc_override.rb
125
+ - test/og/tc_polymorphic.rb
126
+ - test/og/tc_primary_key.rb
127
+ - test/og/tc_relation.rb
128
+ - test/og/tc_reldelete.rb
129
+ - test/og/tc_resolve.rb
130
+ - test/og/tc_reverse.rb
131
+ - test/og/tc_scoped.rb
132
+ - test/og/tc_select.rb
133
+ - test/og/tc_setup.rb
134
+ - test/og/tc_store.rb
135
+ - test/og/tc_types.rb
136
+ - test/og/tc_validation_loop.rb
137
+ - test/og/tc_validation2.rb
138
+ - test/og/tc_validation.rb
139
+ - test/og/store/tc_filesys.rb
140
+ - test/og/store/tc_kirby.rb
141
+ - test/og/store/tc_sti.rb
142
+ - test/og/store/tc_sti2.rb
143
+ - doc/CHANGELOG.1
144
+ - doc/CONTRIBUTORS
145
+ - doc/LICENSE
146
+ - doc/RELEASES
147
+ - doc/tutorial.txt
142
148
  test_files: []
143
149
 
144
150
  rdoc_options: []
@@ -159,5 +165,5 @@ dependencies:
159
165
  requirements:
160
166
  - - "="
161
167
  - !ruby/object:Gem::Version
162
- version: 0.31.0
168
+ version: 0.40.0
163
169
  version:
data/INSTALL DELETED
@@ -1,91 +0,0 @@
1
- = Instalation with RubyGems
2
-
3
- 1. Download and install RubyGems:
4
-
5
- http://rubygems.rubyforge.org
6
-
7
- 2. Install the distribution:
8
-
9
- gem install og
10
-
11
- (make sure you have the latest stable versions of Ruby and RubyGems
12
- installed)
13
-
14
- When asked about the dependencies to include, only accept
15
- the dependencies for the RDBMS backends you are planning
16
- to use.
17
-
18
- 3. Set environment variable (required to load RubyGems):
19
-
20
- export RUBYOPT=-rubygems
21
-
22
- You can add this in you .bashrc in Unix.
23
-
24
- Alternatively you can run your applications with the -rubygem
25
- option:
26
-
27
- ruby -rubygem xxx.rb
28
-
29
- = Installation without RubyGems using script.
30
-
31
- Installation without RubyGems is *strongly* discouraged.
32
- However, as Og is all about freedom and possibilities,
33
- a standard installation script is provided.
34
-
35
- 1. Switch to an administrator account
36
-
37
- For example in Unix:
38
-
39
- $ su -
40
-
41
- 2. Run the installation script.
42
-
43
- $ ruby setup.rb
44
-
45
- This installation script also installs some vendor libraries
46
- that you possibly have allready installed. Use with caution.
47
-
48
- Dependencies needed: See 'ProjectInfo' file located in the
49
- current directory.
50
-
51
- Install the desired database client libraries Libraries are not
52
- required for Og to run. If you wish to use an adapter which
53
- uses one of the databases, then you'll need to install the
54
- client library
55
-
56
- Postgres, MySQL, Kirbybase
57
-
58
-
59
- = Manual installation.
60
-
61
- Uncompress your distribution (Unix example):
62
-
63
- $ cd my_dir
64
- $ tar xvfz og-x.x.x.tar.gz
65
-
66
- Put the libray dir in the Ruby path (Unix example):
67
-
68
- $ export RUBYOPT='-I path/to/og/lib'
69
-
70
-
71
- = Additional libraries
72
-
73
- Og uses a number of additional libraries. RubyGems
74
- installs most of them, but here is the complete
75
- list for your reference:
76
-
77
- * Ruby-psql
78
- http://www.postgresql.jp/interfaces/ruby/archive/ruby-postgres-0.7.1.tar.gz
79
- Ruby interface to the PostgreSQL RDBMS.
80
-
81
- * Ruby-mysql
82
- http://tmtm.org/ja/ruby/mysql/README_en.html
83
- Ruby interface to the MySQL RDBMS.
84
-
85
- * PostgreSQL
86
- http://www.postgres.org
87
- Used for the Database Backend.
88
-
89
- * MySQL
90
- http://www.mysql.org
91
- Used for the Database Backend.