robdimarco_rails_sql_views 0.9.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 (54) hide show
  1. data/CHANGELOG +22 -0
  2. data/CONTRIB +8 -0
  3. data/LICENSE +7 -0
  4. data/README +51 -0
  5. data/Rakefile +41 -0
  6. data/TODO +2 -0
  7. data/init.rb +1 -0
  8. data/lib/active_record/view.rb +76 -0
  9. data/lib/core_ext/module.rb +13 -0
  10. data/lib/rails_sql_views.rb +51 -0
  11. data/lib/rails_sql_views/connection_adapters/abstract/schema_definitions.rb +63 -0
  12. data/lib/rails_sql_views/connection_adapters/abstract/schema_statements.rb +81 -0
  13. data/lib/rails_sql_views/connection_adapters/abstract_adapter.rb +41 -0
  14. data/lib/rails_sql_views/connection_adapters/mysql2_adapter.rb +62 -0
  15. data/lib/rails_sql_views/connection_adapters/mysql_adapter.rb +66 -0
  16. data/lib/rails_sql_views/connection_adapters/oci_adapter.rb +33 -0
  17. data/lib/rails_sql_views/connection_adapters/oracle_adapter.rb +33 -0
  18. data/lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb +39 -0
  19. data/lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb.orig +72 -0
  20. data/lib/rails_sql_views/connection_adapters/postgresql_adapter.rb +65 -0
  21. data/lib/rails_sql_views/connection_adapters/postgresql_adapter.rb.orig +69 -0
  22. data/lib/rails_sql_views/connection_adapters/sqlite_adapter.rb +66 -0
  23. data/lib/rails_sql_views/connection_adapters/sqlserver_adapter.rb +43 -0
  24. data/lib/rails_sql_views/loader.rb +20 -0
  25. data/lib/rails_sql_views/schema_dumper.rb +113 -0
  26. data/lib/rails_sql_views/version.rb +9 -0
  27. data/rails/init.rb +1 -0
  28. data/test/README +63 -0
  29. data/test/adapter_test.rb +82 -0
  30. data/test/connection.example.yml +12 -0
  31. data/test/connection/native_mysql/connection.rb +32 -0
  32. data/test/connection/native_mysql/schema.sql +33 -0
  33. data/test/connection/native_mysql2/connection.rb +32 -0
  34. data/test/connection/native_mysql2/schema.sql +33 -0
  35. data/test/connection/native_postgresql/connection.rb +31 -0
  36. data/test/connection/native_postgresql/schema.sql +33 -0
  37. data/test/connection/oracle_enhanced/connection.rb +29 -0
  38. data/test/connection/oracle_enhanced/procedures.sql +15 -0
  39. data/test/connection/oracle_enhanced/schema.sql +39 -0
  40. data/test/models/item.rb +4 -0
  41. data/test/models/person.rb +5 -0
  42. data/test/models/person2.rb +3 -0
  43. data/test/models/place.rb +2 -0
  44. data/test/models/v_person.rb +4 -0
  45. data/test/models/v_profile.rb +3 -0
  46. data/test/schema.native_mysql.expected.rb +57 -0
  47. data/test/schema.native_mysql2.expected.rb +58 -0
  48. data/test/schema.native_postgresql.expected.rb +51 -0
  49. data/test/schema.oracle_enhanced.expected.rb +51 -0
  50. data/test/schema_dumper_test.rb +130 -0
  51. data/test/test_helper.rb +30 -0
  52. data/test/view_model_test.rb +63 -0
  53. data/test/view_operations_test.rb +36 -0
  54. metadata +246 -0
@@ -0,0 +1,51 @@
1
+ # This file is auto-generated from the current state of the database. Instead of editing this file,
2
+ # please use the migrations feature of Active Record to incrementally modify your database, and
3
+ # then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your database schema. If you need
6
+ # to create the application database on another system, you should be using db:schema:load, not running
7
+ # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
8
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
9
+ #
10
+ # It's strongly recommended to check this file into your version control system.
11
+
12
+ ActiveRecord::Schema.define(:version => 0) do
13
+
14
+ create_table "items", :force => true do |t|
15
+ t.integer "person_id", :precision => 38, :scale => 0
16
+ end
17
+
18
+ create_table "items_people", :id => false, :force => true do |t|
19
+ t.integer "person_id", :precision => 38, :scale => 0
20
+ t.integer "item_id", :precision => 38, :scale => 0
21
+ end
22
+
23
+ create_table "people", :force => true do |t|
24
+ t.string "first_name"
25
+ t.string "last_name"
26
+ t.string "ssn", :limit => 64
27
+ t.integer "address_id", :precision => 38, :scale => 0
28
+ end
29
+
30
+ create_table "people2", :force => true do |t|
31
+ t.string "first_name"
32
+ t.string "last_name"
33
+ t.string "ssn", :limit => 64
34
+ end
35
+
36
+ create_table "places", :force => true do |t|
37
+ t.string "address", :limit => 2000
38
+ t.string "city"
39
+ t.string "cstate"
40
+ t.string "country", :limit => 2
41
+ end
42
+
43
+ create_view "v_people", "select id, first_name, last_name, ssn, address_id from people", :force => true do |v|
44
+ v.column :id
45
+ v.column :f_name
46
+ v.column :l_name
47
+ v.column :social_security
48
+ v.column :address_id
49
+ end
50
+
51
+ end
@@ -0,0 +1,130 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+ require 'active_record/schema_dumper'
3
+
4
+ class SchemaDumperTest < Test::Unit::TestCase
5
+ def setup
6
+ teardown
7
+ end
8
+ def teardown
9
+ ['V_PEOPLE', 'V_PROFILE'].each do |view|
10
+ if ActiveRecord::Base.connection.adapter_name == 'OracleEnhanced'
11
+ ActiveRecord::Base.connection.execute("
12
+ DECLARE
13
+ CURSOR C1 is SELECT view_name FROM user_views where view_name = '#{view}';
14
+ BEGIN
15
+ FOR I IN C1 LOOP
16
+ EXECUTE IMMEDIATE 'DROP VIEW '||I.view_name||'';
17
+ END LOOP;
18
+ END;
19
+ ");
20
+ else
21
+ ActiveRecord::Base.connection.execute("drop view if exists #{view}")
22
+ end
23
+ end
24
+ end
25
+ def test_view
26
+ create_people_view
27
+
28
+ select_stmt = <<-HERE
29
+ select first_name, last_name, ssn from people
30
+ UNION
31
+ select first_name, last_name, ssn from people2
32
+ HERE
33
+
34
+ ActiveRecord::Base.connection.create_view(:v_profile, select_stmt, :force => true) do |v|
35
+ v.column :first_name
36
+ v.column :last_name
37
+ v.column :ssn
38
+ end
39
+
40
+ stream = StringIO.new
41
+ dumper = ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
42
+ stream.rewind
43
+ assert_equal File.open(File.dirname(__FILE__) + "/schema.#{$connection}.expected.rb", 'r').readlines, stream.readlines
44
+ end
45
+ def test_dump_and_load
46
+ create_people_view
47
+ assert_dump_and_load_succeed
48
+ end
49
+ def test_union
50
+ Person.create(:first_name => 'Joe', :last_name => 'User', :ssn => '123456789')
51
+ Person2.create(:first_name => 'Jane', :last_name => 'Doe', :ssn => '222334444')
52
+
53
+ select_stmt = <<-HERE
54
+ select first_name, last_name, ssn from people
55
+ UNION
56
+ select first_name, last_name, ssn from people2
57
+ HERE
58
+
59
+ ActiveRecord::Base.connection.create_view(:v_profile, select_stmt, :force => true) do |v|
60
+ v.column :first_name
61
+ v.column :last_name
62
+ v.column :ssn
63
+ end
64
+
65
+ assert_dump_and_load_succeed
66
+ end
67
+ def test_view_creation_order
68
+ ActiveRecord::SchemaDumper.view_creation_order << :v_people
69
+ create_people_view
70
+ assert_dump_and_load_succeed
71
+ ActiveRecord::SchemaDumper.view_creation_order.pop
72
+ end
73
+ def test_symbol_ignore
74
+ ActiveRecord::SchemaDumper.ignore_views << :v_people
75
+ create_people_view
76
+ assert_dump_and_load_succeed
77
+ ActiveRecord::SchemaDumper.ignore_views.pop
78
+ end
79
+ def test_regex_ignore
80
+ ActiveRecord::SchemaDumper.ignore_views << Regexp.new(/v_people/)
81
+ create_people_view
82
+ assert_dump_and_load_succeed
83
+ ActiveRecord::SchemaDumper.ignore_views.pop
84
+ end
85
+ def test_non_allowed_object_raises_error
86
+ create_people_view
87
+ ActiveRecord::SchemaDumper.ignore_views << 0
88
+ begin
89
+ schema_file = File.dirname(__FILE__) + "/schema.#{$connection}.out.rb"
90
+ File.open(schema_file, "w") do |file|
91
+ assert_raise(StandardError) do
92
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
93
+ end
94
+ end
95
+ ensure
96
+ ActiveRecord::SchemaDumper.ignore_views.pop
97
+ end
98
+ end
99
+
100
+ def test_logging_error
101
+ ActiveRecord::SchemaDumper.ignore_views << 0
102
+ old_logger = ActiveRecord::Base.logger
103
+
104
+ begin
105
+ mock_logger = flexmock('logger', :error => nil)
106
+ mock_logger.should_receive(:error)
107
+ ActiveRecord::Base.logger = mock_logger
108
+ schema_file = File.dirname(__FILE__) + "/schema.#{$connection}.out.rb"
109
+ File.open(schema_file, "w") do |file|
110
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
111
+ end
112
+ ensure
113
+ ActiveRecord::SchemaDumper.ignore_views.pop
114
+ ActiveRecord::Base.logger = old_logger
115
+ end
116
+ end
117
+
118
+ def assert_dump_and_load_succeed
119
+ schema_file = File.dirname(__FILE__) + "/schema.#{$connection}.out.rb"
120
+ assert_nothing_raised do
121
+ File.open(schema_file, "w") do |file|
122
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
123
+ end
124
+ end
125
+
126
+ assert_nothing_raised do
127
+ load(schema_file)
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,30 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+ $:.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'pp'
7
+ require 'flexmock/test_unit'
8
+
9
+ require 'active_record'
10
+ $connection = (ENV['DB'] || 'native_mysql2')
11
+ # $connection = (ENV['DB'] || 'native_postgresql')
12
+ require "connection/#{$connection}/connection"
13
+ require 'rails_sql_views'
14
+
15
+ require 'models/person'
16
+ require 'models/person2'
17
+ require 'models/v_person'
18
+
19
+ class Test::Unit::TestCase
20
+ def create_people_view
21
+ ActiveRecord::Base.connection.create_view(:v_people,
22
+ 'select id, first_name, last_name, ssn, address_id from people', :force => true) do |v|
23
+ v.column :id
24
+ v.column :f_name
25
+ v.column :l_name
26
+ v.column :social_security
27
+ v.column :address_id
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,63 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ require 'models/item'
4
+ require 'models/place'
5
+
6
+ class ViewModelTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ create_people_view
10
+ VPerson.send(:based_on, Person)
11
+
12
+ @address = Place.create!
13
+ @person = Person.create!(:first_name => 'Primus', :address => @address)
14
+ @items = [ @person.owned_items.create!, @person.owned_items.create! ]
15
+ @sharable_items = [ Item.create!, Item.create!, Item.create! ]
16
+ @person.shared_items << @sharable_items[0]
17
+ @person.shared_items << @sharable_items[2]
18
+
19
+ @vperson = VPerson.find(@person.id)
20
+ end
21
+
22
+ def cleanup
23
+ Item.delete_all
24
+ Person.delete_all
25
+ Place.delete_all
26
+ end
27
+
28
+ def test_same_person
29
+ assert_equal @person.id, @vperson.id
30
+ end
31
+
32
+ def test_cloned_belongs_to_association_exists
33
+ reflection = VPerson.reflect_on_association(:address)
34
+ assert_not_nil reflection
35
+ end
36
+
37
+ def test_access_cloned_belongs_to_association
38
+ assert_equal @address, @vperson.address
39
+ end
40
+
41
+ def test_cloned_has_many_association_exists
42
+ reflection = VPerson.reflect_on_association(:owned_items)
43
+ assert_not_nil reflection
44
+ end
45
+
46
+ def test_access_cloned_has_many_association
47
+ items = @vperson.owned_items
48
+ assert_equal 2, items.size
49
+ assert_equal @items.sort_by(&:id), items.sort_by(&:id)
50
+ end
51
+
52
+ def test_cloned_habtm_association_exists
53
+ reflection = VPerson.reflect_on_association(:shared_items)
54
+ assert_not_nil reflection
55
+ end
56
+
57
+ def test_access_cloned_habtm_association
58
+ items = @vperson.shared_items
59
+ assert_equal 2, items.size
60
+ expected_items = [ @sharable_items[0], @sharable_items[2] ]
61
+ assert_equal expected_items.sort_by(&:id), items.sort_by(&:id)
62
+ end
63
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ class ViewOperationsTest < Test::Unit::TestCase
4
+ def test_create_view
5
+ Person.create(:first_name => 'John', :last_name => 'Doe', :ssn => '123456789')
6
+ assert_nothing_raised do
7
+ ActiveRecord::Base.connection.create_view(:v_people,
8
+ 'select first_name, last_name, ssn from people', :force => true) do |v|
9
+ v.column :f_name
10
+ v.column :l_name
11
+ v.column :social_security
12
+ end
13
+ end
14
+ p = Person.find(:first)
15
+ vp = VPerson.find(:first)
16
+ assert_equal p.first_name, vp.f_name
17
+ end
18
+ def test_drop_view
19
+ assert_nothing_raised do
20
+ ActiveRecord::Base.connection.create_view(:v_place,
21
+ 'select address, city, cstate, country from places', :force => true) do |v|
22
+ v.column :v_address
23
+ v.column :v_city
24
+ v.column :v_state
25
+ v.column :v_country
26
+ end
27
+ ActiveRecord::Base.connection.drop_view(:v_place)
28
+ end
29
+ assert_raises(ActiveRecord::StatementInvalid) do
30
+ ActiveRecord::Base.connection.execute "SELECT * FROM v_place"
31
+ end
32
+ end
33
+ def test_no_view_raises_error
34
+ assert_raises(RuntimeError) { ActiveRecord::Base.connection.view_select_statement('foo') }
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,246 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: robdimarco_rails_sql_views
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.9.0
6
+ platform: ruby
7
+ authors:
8
+ - Anthony Eden
9
+ - Rob Di Marco
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-12-20 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 3.0.7
21
+ none: false
22
+ prerelease: false
23
+ name: rails
24
+ requirement: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 3.0.7
29
+ none: false
30
+ type: :runtime
31
+ - !ruby/object:Gem::Dependency
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ prerelease: false
39
+ name: rake
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ none: false
46
+ type: :development
47
+ - !ruby/object:Gem::Dependency
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ none: false
54
+ prerelease: false
55
+ name: flexmock
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ none: false
62
+ type: :development
63
+ - !ruby/object:Gem::Dependency
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ prerelease: false
71
+ name: test-unit
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ none: false
78
+ type: :development
79
+ - !ruby/object:Gem::Dependency
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ none: false
86
+ prerelease: false
87
+ name: mysql2
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ none: false
94
+ type: :development
95
+ - !ruby/object:Gem::Dependency
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ none: false
102
+ prerelease: false
103
+ name: pg
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ none: false
110
+ type: :development
111
+ - !ruby/object:Gem::Dependency
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ none: false
118
+ prerelease: false
119
+ name: activerecord
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ none: false
126
+ type: :development
127
+ description: Adds support for using SQL views within ActiveRecord. Allows for migration
128
+ support for views
129
+ email:
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files:
133
+ - LICENSE
134
+ - README
135
+ - TODO
136
+ files:
137
+ - rails/init.rb
138
+ - lib/active_record/view.rb
139
+ - lib/core_ext/module.rb
140
+ - lib/rails_sql_views/connection_adapters/abstract/schema_definitions.rb
141
+ - lib/rails_sql_views/connection_adapters/abstract/schema_statements.rb
142
+ - lib/rails_sql_views/connection_adapters/abstract_adapter.rb
143
+ - lib/rails_sql_views/connection_adapters/mysql2_adapter.rb
144
+ - lib/rails_sql_views/connection_adapters/mysql_adapter.rb
145
+ - lib/rails_sql_views/connection_adapters/oci_adapter.rb
146
+ - lib/rails_sql_views/connection_adapters/oracle_adapter.rb
147
+ - lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb
148
+ - lib/rails_sql_views/connection_adapters/oracleenhanced_adapter.rb.orig
149
+ - lib/rails_sql_views/connection_adapters/postgresql_adapter.rb
150
+ - lib/rails_sql_views/connection_adapters/postgresql_adapter.rb.orig
151
+ - lib/rails_sql_views/connection_adapters/sqlite_adapter.rb
152
+ - lib/rails_sql_views/connection_adapters/sqlserver_adapter.rb
153
+ - lib/rails_sql_views/loader.rb
154
+ - lib/rails_sql_views/schema_dumper.rb
155
+ - lib/rails_sql_views/version.rb
156
+ - lib/rails_sql_views.rb
157
+ - LICENSE
158
+ - Rakefile
159
+ - README
160
+ - init.rb
161
+ - CHANGELOG
162
+ - CONTRIB
163
+ - TODO
164
+ - test/adapter_test.rb
165
+ - test/connection/native_mysql/connection.rb
166
+ - test/connection/native_mysql/schema.sql
167
+ - test/connection/native_mysql2/connection.rb
168
+ - test/connection/native_mysql2/schema.sql
169
+ - test/connection/native_postgresql/connection.rb
170
+ - test/connection/native_postgresql/schema.sql
171
+ - test/connection/oracle_enhanced/connection.rb
172
+ - test/connection/oracle_enhanced/procedures.sql
173
+ - test/connection/oracle_enhanced/schema.sql
174
+ - test/connection.example.yml
175
+ - test/models/item.rb
176
+ - test/models/person.rb
177
+ - test/models/person2.rb
178
+ - test/models/place.rb
179
+ - test/models/v_person.rb
180
+ - test/models/v_profile.rb
181
+ - test/README
182
+ - test/schema.native_mysql.expected.rb
183
+ - test/schema.native_mysql2.expected.rb
184
+ - test/schema.native_postgresql.expected.rb
185
+ - test/schema.oracle_enhanced.expected.rb
186
+ - test/schema_dumper_test.rb
187
+ - test/test_helper.rb
188
+ - test/view_model_test.rb
189
+ - test/view_operations_test.rb
190
+ homepage: http://github.com/robdimarco/rails_sql_views
191
+ licenses: []
192
+ post_install_message:
193
+ rdoc_options: []
194
+ require_paths:
195
+ - lib
196
+ required_ruby_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ segments:
202
+ - 0
203
+ hash: 3381935535632702404
204
+ none: false
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ segments:
211
+ - 0
212
+ hash: 3381935535632702404
213
+ none: false
214
+ requirements: []
215
+ rubyforge_project:
216
+ rubygems_version: 1.8.24
217
+ signing_key:
218
+ specification_version: 3
219
+ summary: Library which adds SQL Views to ActiveRecord.
220
+ test_files:
221
+ - test/adapter_test.rb
222
+ - test/connection/native_mysql/connection.rb
223
+ - test/connection/native_mysql/schema.sql
224
+ - test/connection/native_mysql2/connection.rb
225
+ - test/connection/native_mysql2/schema.sql
226
+ - test/connection/native_postgresql/connection.rb
227
+ - test/connection/native_postgresql/schema.sql
228
+ - test/connection/oracle_enhanced/connection.rb
229
+ - test/connection/oracle_enhanced/procedures.sql
230
+ - test/connection/oracle_enhanced/schema.sql
231
+ - test/connection.example.yml
232
+ - test/models/item.rb
233
+ - test/models/person.rb
234
+ - test/models/person2.rb
235
+ - test/models/place.rb
236
+ - test/models/v_person.rb
237
+ - test/models/v_profile.rb
238
+ - test/README
239
+ - test/schema.native_mysql.expected.rb
240
+ - test/schema.native_mysql2.expected.rb
241
+ - test/schema.native_postgresql.expected.rb
242
+ - test/schema.oracle_enhanced.expected.rb
243
+ - test/schema_dumper_test.rb
244
+ - test/test_helper.rb
245
+ - test/view_model_test.rb
246
+ - test/view_operations_test.rb