schema_plus 0.4.1 → 1.0.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 (55) hide show
  1. data/.gitignore +3 -1
  2. data/.travis.yml +6 -9
  3. data/Gemfile +0 -4
  4. data/README.rdoc +168 -70
  5. data/Rakefile +58 -47
  6. data/gemfiles/rails-3.2/Gemfile.base +4 -0
  7. data/gemfiles/rails-3.2/Gemfile.mysql +4 -0
  8. data/gemfiles/rails-3.2/Gemfile.mysql2 +4 -0
  9. data/gemfiles/rails-3.2/Gemfile.postgresql +4 -0
  10. data/gemfiles/rails-3.2/Gemfile.sqlite3 +4 -0
  11. data/lib/schema_plus.rb +2 -0
  12. data/lib/schema_plus/active_record/column_options_handler.rb +73 -32
  13. data/lib/schema_plus/active_record/connection_adapters/abstract_adapter.rb +60 -31
  14. data/lib/schema_plus/active_record/connection_adapters/foreign_key_definition.rb +7 -2
  15. data/lib/schema_plus/active_record/connection_adapters/index_definition.rb +2 -1
  16. data/lib/schema_plus/active_record/connection_adapters/mysql_adapter.rb +19 -1
  17. data/lib/schema_plus/active_record/connection_adapters/postgresql_adapter.rb +68 -17
  18. data/lib/schema_plus/active_record/connection_adapters/sqlite3_adapter.rb +28 -3
  19. data/lib/schema_plus/active_record/connection_adapters/table_definition.rb +27 -1
  20. data/lib/schema_plus/active_record/db_default.rb +19 -0
  21. data/lib/schema_plus/active_record/foreign_keys.rb +40 -32
  22. data/lib/schema_plus/active_record/schema_dumper.rb +7 -3
  23. data/lib/schema_plus/version.rb +1 -1
  24. data/runspecs +5 -8
  25. data/schema_plus.gemspec +2 -5
  26. data/spec/column_definition_spec.rb +18 -1
  27. data/spec/column_spec.rb +39 -2
  28. data/spec/connection_spec.rb +1 -1
  29. data/spec/connections/mysql/connection.rb +1 -1
  30. data/spec/connections/mysql2/connection.rb +1 -1
  31. data/spec/connections/postgresql/connection.rb +1 -1
  32. data/spec/foreign_key_definition_spec.rb +0 -4
  33. data/spec/foreign_key_spec.rb +37 -13
  34. data/spec/index_definition_spec.rb +54 -2
  35. data/spec/index_spec.rb +59 -15
  36. data/spec/migration_spec.rb +336 -85
  37. data/spec/multiple_schemas_spec.rb +127 -0
  38. data/spec/schema_dumper_spec.rb +65 -25
  39. data/spec/schema_spec.rb +16 -18
  40. data/spec/spec_helper.rb +19 -18
  41. data/spec/support/matchers/reference.rb +7 -1
  42. data/spec/views_spec.rb +5 -2
  43. metadata +43 -54
  44. data/gemfiles/Gemfile.rails-2.3 +0 -6
  45. data/gemfiles/Gemfile.rails-2.3.lock +0 -65
  46. data/gemfiles/Gemfile.rails-3.0 +0 -5
  47. data/gemfiles/Gemfile.rails-3.0.lock +0 -113
  48. data/gemfiles/Gemfile.rails-3.1 +0 -5
  49. data/gemfiles/Gemfile.rails-3.1.lock +0 -123
  50. data/gemfiles/Gemfile.rails-3.2 +0 -5
  51. data/gemfiles/Gemfile.rails-3.2.lock +0 -121
  52. data/spec/models/comment.rb +0 -2
  53. data/spec/models/post.rb +0 -2
  54. data/spec/models/user.rb +0 -2
  55. data/spec/rails3_migration_spec.rb +0 -144
@@ -0,0 +1,127 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "with multiple schemas" do
4
+ let (:connection) { ActiveRecord::Base.connection }
5
+
6
+ before(:all) do
7
+ newdb = case connection.adapter_name
8
+ when /^mysql/i then "CREATE SCHEMA IF NOT EXISTS schema_plus_test2"
9
+ when /^postgresql/i then "CREATE SCHEMA schema_plus_test2"
10
+ when /^sqlite/i then "ATTACH ':memory:' AS schema_plus_test2"
11
+ end
12
+ begin
13
+ ActiveRecord::Base.connection.execute newdb
14
+ rescue ActiveRecord::StatementInvalid => e
15
+ raise unless e.message =~ /already exists/
16
+ end
17
+
18
+ class User < ::ActiveRecord::Base ; end
19
+ end
20
+
21
+ before(:each) do
22
+ define_schema(:auto_create => false) do
23
+ create_table :users, :force => true do |t|
24
+ t.string :login
25
+ end
26
+ end
27
+
28
+ connection.execute 'DROP TABLE IF EXISTS schema_plus_test2.users'
29
+ connection.execute 'CREATE TABLE schema_plus_test2.users (id ' + case connection.adapter_name
30
+ when /^mysql/i then "integer primary key auto_increment"
31
+ when /^postgresql/i then "serial primary key"
32
+ when /^sqlite/i then "integer primary key autoincrement"
33
+ end + ", login varchar(255))"
34
+ end
35
+
36
+ context "with indexes in each schema" do
37
+ before(:each) do
38
+ connection.execute 'CREATE INDEX ' + case connection.adapter_name
39
+ when /^mysql/i then "index_users_on_login ON schema_plus_test2.users"
40
+ when /^postgresql/i then "index_users_on_login ON schema_plus_test2.users"
41
+ when /^sqlite/i then "schema_plus_test2.index_users_on_login ON users"
42
+ end + " (login)"
43
+ end
44
+
45
+ it "should not find indexes in other schema" do
46
+ User.reset_column_information
47
+ User.indexes.should be_empty
48
+ end
49
+
50
+ it "should find index in current schema" do
51
+ connection.execute 'CREATE INDEX index_users_on_login ON users (login)'
52
+ User.reset_column_information
53
+ User.indexes.map(&:name).should == ['index_users_on_login']
54
+ end
55
+ end
56
+
57
+ context "with views in each schema" do
58
+ around(:each) do |example|
59
+ begin
60
+ example.run
61
+ ensure
62
+ connection.execute 'DROP VIEW schema_plus_test2.myview' rescue nil
63
+ connection.execute 'DROP VIEW myview' rescue nil
64
+ end
65
+ end
66
+
67
+ before(:each) do
68
+ connection.views.each { |view| connection.drop_view view }
69
+ connection.execute 'CREATE VIEW schema_plus_test2.myview AS SELECT * FROM users'
70
+ end
71
+
72
+ it "should not find views in other schema" do
73
+ connection.views.should be_empty
74
+ end
75
+
76
+ it "should find views in this schema" do
77
+ connection.execute 'CREATE VIEW myview AS SELECT * FROM users'
78
+ connection.views.should == ['myview']
79
+ end
80
+ end
81
+
82
+ context "with foreign key in each schema" do
83
+ before(:each) do
84
+ class Comment < ::ActiveRecord::Base ; end
85
+ connection.execute 'DROP TABLE IF EXISTS schema_plus_test2.comments'
86
+ connection.execute 'CREATE TABLE schema_plus_test2.comments (user_id integer,' + case connection.adapter_name
87
+ when /^mysql/i then "foreign key (user_id) references schema_plus_test2.users (id))"
88
+ when /^postgresql/i then "foreign key (user_id) references schema_plus_test2.users (id))"
89
+ when /^sqlite/i then "foreign key (user_id) references users (id))"
90
+ end
91
+ end
92
+
93
+ around(:each) do |example|
94
+ begin
95
+ example.run
96
+ ensure
97
+ connection.execute 'DROP TABLE IF EXISTS comments'
98
+ connection.execute 'DROP TABLE IF EXISTS schema_plus_test2.comments'
99
+ end
100
+ end
101
+
102
+ it "should not find foreign keys in other schema" do
103
+ connection.create_table :comments, :force => true do |t|
104
+ t.integer :user_id, :foreign_key => false
105
+ end
106
+ Comment.reset_column_information
107
+ Comment.foreign_keys.length.should == 0
108
+ User.reset_column_information
109
+ User.reverse_foreign_keys.length.should == 0
110
+ end
111
+
112
+ it "should find foreign keys in this schema" do
113
+ connection.create_table :comments, :force => true do |t|
114
+ t.integer :user_id, :foreign_key => true
115
+ end
116
+ Comment.reset_column_information
117
+ Comment.foreign_keys.map(&:column_names).flatten.should == ["user_id"]
118
+ User.reset_column_information
119
+ User.reverse_foreign_keys.map(&:column_names).flatten.should == ["user_id"]
120
+ end
121
+
122
+ end
123
+
124
+ end
125
+
126
+
127
+
@@ -36,37 +36,44 @@ describe "Schema dump" do
36
36
  class ::Comment < ActiveRecord::Base ; end
37
37
  end
38
38
 
39
- let(:dump_posts) do
40
- stream = StringIO.new
41
- ActiveRecord::SchemaDumper.ignore_tables = %w[users comments]
42
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
43
- stream.string
39
+ it "should include foreign_key definition" do
40
+ with_foreign_key Post, :user_id, :users, :id do
41
+ dump_posts.should match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"]}))
42
+ end
44
43
  end
45
44
 
46
- let(:dump_all) do
47
- stream = StringIO.new
48
- ActiveRecord::SchemaDumper.ignore_tables = []
49
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
50
- stream.string
45
+ it "should include foreign_key name" do
46
+ with_foreign_key Post, :user_id, :users, :id, :name => "yippee" do
47
+ dump_posts.should match /foreign_key.*user_id.*users.*id.*:name => "yippee"/
48
+ end
51
49
  end
52
50
 
53
- it "should include foreign_key definition" do
54
- with_foreign_key Post, :user_id, :users, :id do
55
- dump_posts.should match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"]}))
51
+ it "should sort foreign_key definitions" do
52
+ with_foreign_keys Comment, [ [ :post_id, :posts, :id ], [ :commenter_id, :users, :id ]] do
53
+ dump_schema.should match(/foreign_key.+commenter_id.+foreign_key.+post_id/m)
56
54
  end
57
55
  end
58
56
 
59
57
  context "with constraint dependencies" do
60
58
  it "should sort in Posts => Comments direction" do
61
59
  with_foreign_key Comment, :post_id, :posts, :id do
62
- dump_all.should match(%r{create_table "posts".*create_table "comments"}m)
60
+ dump_schema.should match(%r{create_table "posts".*create_table "comments"}m)
63
61
  end
64
62
  end
65
63
  it "should sort in Comments => Posts direction" do
66
64
  with_foreign_key Post, :first_comment_id, :comments, :id do
67
- dump_all.should match(%r{create_table "comments".*create_table "posts"}m)
65
+ dump_schema.should match(%r{create_table "comments".*create_table "posts"}m)
68
66
  end
69
67
  end
68
+
69
+ it "should handle regexp in ignore_tables" do
70
+ with_foreign_key Comment, :post_id, :posts, :id do
71
+ dump = dump_schema(:ignore => /post/)
72
+ dump.should match /create_table "comments"/
73
+ dump.should_not match /create_table "posts"/
74
+ end
75
+ end
76
+
70
77
  end
71
78
 
72
79
  context "with date default" do
@@ -82,6 +89,12 @@ describe "Schema dump" do
82
89
  dump_posts.should match(%r{t.datetime "posted_at",\s*:default => '2001-09-28 00:00:00'})
83
90
  end
84
91
  end
92
+
93
+ it "can dump a complex default expression" do
94
+ with_additional_column Post, :name, :string, :default => {:expr => 'substring(random()::text from 3 for 6)'} do
95
+ dump_posts.should match(%r{t.string\s+"name", :default => { :expr => "\\"substring\\"\(\(random\(\)\)::text, 3, 6\)" }})
96
+ end
97
+ end
85
98
  end
86
99
 
87
100
  if SchemaPlusHelpers.sqlite3?
@@ -126,8 +139,8 @@ describe "Schema dump" do
126
139
  end
127
140
 
128
141
  it "should include index name" do
129
- with_index Post, :user_id, :name => "posts_user_id_index" do
130
- dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index"}))
142
+ with_index Post, :user_id, :name => "custom_name" do
143
+ dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "custom_name"}))
131
144
  end
132
145
  end
133
146
 
@@ -137,6 +150,16 @@ describe "Schema dump" do
137
150
  end
138
151
  end
139
152
 
153
+ unless SchemaPlusHelpers.mysql?
154
+
155
+ it "should include index order" do
156
+ with_index Post, [:user_id, :first_comment_id], :order => { :user_id => :asc, :first_comment_id => :desc } do
157
+ dump_posts.should match(%r{t.index \["user_id", "first_comment_id"\],.*:order => {"user_id" => :asc, "first_comment_id" => :desc}})
158
+ end
159
+ end
160
+
161
+ end
162
+
140
163
  if SchemaPlusHelpers.postgresql?
141
164
 
142
165
  it "should define case insensitive index" do
@@ -176,15 +199,15 @@ describe "Schema dump" do
176
199
  end
177
200
 
178
201
  it "should not raise an error" do
179
- expect { dump_all }.should_not raise_error
202
+ expect { dump_schema }.to_not raise_error
180
203
  end
181
204
 
182
205
  it "should dump constraints after the tables they reference" do
183
- dump_all.should match(%r{create_table "comments".*foreign_key.*\["first_comment_id"\], "comments", \["id"\]}m)
184
- dump_all.should match(%r{create_table "posts".*foreign_key.*\["first_post_id"\], "posts", \["id"\]}m)
185
- dump_all.should match(%r{create_table "posts".*foreign_key.*\["post_id"\], "posts", \["id"\]}m)
186
- dump_all.should match(%r{create_table "users".*foreign_key.*\["commenter_id"\], "users", \["id"\]}m)
187
- dump_all.should match(%r{create_table "users".*foreign_key.*\["user_id"\], "users", \["id"\]}m)
206
+ dump_schema.should match(%r{create_table "comments".*foreign_key.*\["first_comment_id"\], "comments", \["id"\]}m)
207
+ dump_schema.should match(%r{create_table "posts".*foreign_key.*\["first_post_id"\], "posts", \["id"\]}m)
208
+ dump_schema.should match(%r{create_table "posts".*foreign_key.*\["post_id"\], "posts", \["id"\]}m)
209
+ dump_schema.should match(%r{create_table "users".*foreign_key.*\["commenter_id"\], "users", \["id"\]}m)
210
+ dump_schema.should match(%r{create_table "users".*foreign_key.*\["user_id"\], "users", \["id"\]}m)
188
211
  end
189
212
  end
190
213
  end
@@ -207,14 +230,20 @@ describe "Schema dump" do
207
230
  yield
208
231
  end
209
232
 
210
- def with_foreign_key(model, columns, referenced_table_name, referenced_columns, options = {})
233
+ def with_foreign_key(model, columns, referenced_table_name, referenced_columns, options = {}, &block)
234
+ with_foreign_keys(model, [[columns, referenced_table_name, referenced_columns, options]], &block)
235
+ end
236
+
237
+ def with_foreign_keys(model, columnsets)
211
238
  table_columns = model.columns.reject{|column| column.name == 'id'}
212
239
  ActiveRecord::Migration.suppress_messages do
213
240
  ActiveRecord::Migration.create_table model.table_name, :force => true do |t|
214
241
  table_columns.each do |column|
215
242
  t.column column.name, column.type
216
243
  end
217
- t.foreign_key columns, referenced_table_name, referenced_columns, options
244
+ columnsets.each do |columns, referenced_table_name, referenced_columns, options|
245
+ t.foreign_key columns, referenced_table_name, referenced_columns, options || {}
246
+ end
218
247
  end
219
248
  end
220
249
  model.reset_column_information
@@ -257,4 +286,15 @@ describe "Schema dump" do
257
286
  name ||= model.foreign_keys.detect { |fk| fk.table_name == model.table_name.to_s && fk.column_names == Array(columns).collect(&:to_s) }.name
258
287
  end
259
288
 
289
+ def dump_schema(opts={})
290
+ stream = StringIO.new
291
+ ActiveRecord::SchemaDumper.ignore_tables = Array.wrap(opts[:ignore]) || []
292
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
293
+ stream.string
294
+ end
295
+
296
+ def dump_posts
297
+ dump_schema(:ignore => %w[users comments])
298
+ end
299
+
260
300
  end
data/spec/schema_spec.rb CHANGED
@@ -17,42 +17,40 @@ describe ActiveRecord::Schema do
17
17
  end
18
18
 
19
19
  it "should pass" do
20
- expect { define_schema }.should_not raise_error
20
+ expect { do_schema }.to_not raise_error
21
21
  end
22
22
 
23
23
  it "should create only explicity added indexes" do
24
- define_schema
24
+ do_schema
25
25
  expected = SchemaPlusHelpers.mysql? ? 2 : 1
26
26
  connection.tables.collect { |table| connection.indexes(table) }.flatten.should have(expected).items
27
27
  end
28
28
 
29
29
  it "should create only explicity added foriegn keys" do
30
- define_schema
30
+ do_schema
31
31
  connection.tables.collect { |table| connection.foreign_keys(table) }.flatten.should have(2).items
32
32
  end
33
33
 
34
34
  end
35
35
 
36
36
  protected
37
- def define_schema
38
- ActiveRecord::Migration.suppress_messages do
39
- schema.define do
40
- connection.tables.each do |table| drop_table table end
37
+ def do_schema
38
+ define_schema do
39
+ connection.tables.each do |table| drop_table table end
41
40
 
42
- create_table :users, :force => true do
43
- end
41
+ create_table :users, :force => true do
42
+ end
44
43
 
45
- create_table :colors, :force => true do
46
- end
44
+ create_table :colors, :force => true do
45
+ end
47
46
 
48
- create_table :shoes, :force => true do
49
- end
47
+ create_table :shoes, :force => true do
48
+ end
50
49
 
51
- create_table :posts, :force => true do |t|
52
- t.integer :user_id, :references => :users, :index => true
53
- t.integer :shoe_id, :references => :shoes # should not have an index (except mysql)
54
- t.integer :color_id # should not have a foreign key nor index
55
- end
50
+ create_table :posts, :force => true do |t|
51
+ t.integer :user_id, :references => :users, :index => true
52
+ t.integer :shoe_id, :references => :shoes # should not have an index (except mysql)
53
+ t.integer :color_id # should not have a foreign key nor index
56
54
  end
57
55
  end
58
56
  end
data/spec/spec_helper.rb CHANGED
@@ -19,30 +19,31 @@ RSpec.configure do |config|
19
19
  config.include(SchemaPlusHelpers)
20
20
  end
21
21
 
22
- def load_schema(name)
23
- ActiveRecord::Migration.suppress_messages do
24
- eval(File.read(File.join(File.dirname(__FILE__), 'schema', name)))
22
+ def with_fk_config(opts, &block)
23
+ save = Hash[opts.keys.collect{|key| [key, SchemaPlus.config.foreign_keys.send(key)]}]
24
+ begin
25
+ SchemaPlus.config.foreign_keys.update_attributes(opts)
26
+ yield
27
+ ensure
28
+ SchemaPlus.config.foreign_keys.update_attributes(save)
25
29
  end
26
30
  end
27
31
 
28
- def load_core_schema
29
- SchemaPlus.setup do |config|
30
- config.foreign_keys.auto_create = false;
31
- end
32
- load_schema('core_schema.rb')
33
- load 'models/user.rb'
34
- load 'models/post.rb'
35
- load 'models/comment.rb'
32
+ def with_fk_auto_create(value = true, &block)
33
+ with_fk_config(:auto_create => value, &block)
36
34
  end
37
35
 
38
- def load_auto_schema
39
- SchemaPlus.setup do |config|
40
- config.foreign_keys.auto_create = true;
36
+ def define_schema(config={}, &block)
37
+ with_fk_config(config) do
38
+ ActiveRecord::Migration.suppress_messages do
39
+ ActiveRecord::Schema.define do
40
+ connection.tables.each do |table|
41
+ drop_table table
42
+ end
43
+ instance_eval &block
44
+ end
45
+ end
41
46
  end
42
- load_schema('auto_schema.rb')
43
- load 'models/user.rb'
44
- load 'models/post.rb'
45
- load 'models/comment.rb'
46
47
  end
47
48
 
48
49
  def remove_all_models
@@ -23,7 +23,8 @@ module SchemaPlusMatchers
23
23
  @result.any? do |fk|
24
24
  fk.column_names == @column_names &&
25
25
  (@on_update ? fk.on_update == @on_update : true) &&
26
- (@on_delete ? fk.on_delete == @on_delete : true)
26
+ (@on_delete ? fk.on_delete == @on_delete : true) &&
27
+ (@name ? fk.name == @name : true)
27
28
  end
28
29
  else
29
30
  !@result.empty?
@@ -56,6 +57,11 @@ module SchemaPlusMatchers
56
57
  self
57
58
  end
58
59
 
60
+ def with_name(action)
61
+ @name = action
62
+ self
63
+ end
64
+
59
65
  end
60
66
 
61
67
  def reference(*expect)
data/spec/views_spec.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
+ class Item < ActiveRecord::Base
4
+ end
5
+
3
6
  class AOnes < ActiveRecord::Base
4
7
  end
5
8
 
@@ -81,7 +84,7 @@ describe ActiveRecord do
81
84
 
82
85
 
83
86
  it "should raise an error by default" do
84
- expect {migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)')}.should raise_error ActiveRecord::StatementInvalid
87
+ expect {migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)')}.to raise_error ActiveRecord::StatementInvalid
85
88
  end
86
89
 
87
90
  it "should override existing definition if :force true" do
@@ -137,7 +140,7 @@ describe ActiveRecord do
137
140
  t.string :s
138
141
  end
139
142
 
140
- create_view :a_ones, "select b, s from items where a = 1"
143
+ create_view :a_ones, Item.select('b, s').where(:a => 1)
141
144
  create_view :ab_ones, "select s from a_ones where b = 1"
142
145
  end
143
146
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,27 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-23 00:00:00.000000000 Z
13
+ date: 2012-12-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &70097168546520 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
22
+ version: '3.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70097168546520
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '3.2'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: valuable
28
- requirement: &70097168546100 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -33,21 +38,15 @@ dependencies:
33
38
  version: '0'
34
39
  type: :runtime
35
40
  prerelease: false
36
- version_requirements: *70097168546100
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
- requirement: &70097168545600 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
40
42
  none: false
41
43
  requirements:
42
- - - ~>
44
+ - - ! '>='
43
45
  - !ruby/object:Gem::Version
44
- version: 0.8.7
45
- type: :development
46
- prerelease: false
47
- version_requirements: *70097168545600
46
+ version: '0'
48
47
  - !ruby/object:Gem::Dependency
49
- name: rspec
50
- requirement: &70097168071980 !ruby/object:Gem::Requirement
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ! '>='
@@ -55,21 +54,15 @@ dependencies:
55
54
  version: '0'
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *70097168071980
59
- - !ruby/object:Gem::Dependency
60
- name: pg
61
- requirement: &70097168069640 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
62
58
  none: false
63
59
  requirements:
64
60
  - - ! '>='
65
61
  - !ruby/object:Gem::Version
66
62
  version: '0'
67
- type: :development
68
- prerelease: false
69
- version_requirements: *70097168069640
70
63
  - !ruby/object:Gem::Dependency
71
- name: mysql
72
- requirement: &70097168068180 !ruby/object:Gem::Requirement
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
73
66
  none: false
74
67
  requirements:
75
68
  - - ! '>='
@@ -77,21 +70,15 @@ dependencies:
77
70
  version: '0'
78
71
  type: :development
79
72
  prerelease: false
80
- version_requirements: *70097168068180
81
- - !ruby/object:Gem::Dependency
82
- name: sqlite3
83
- requirement: &70097168067300 !ruby/object:Gem::Requirement
73
+ version_requirements: !ruby/object:Gem::Requirement
84
74
  none: false
85
75
  requirements:
86
76
  - - ! '>='
87
77
  - !ruby/object:Gem::Version
88
78
  version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: *70097168067300
92
79
  - !ruby/object:Gem::Dependency
93
80
  name: simplecov
94
- requirement: &70097168066460 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
95
82
  none: false
96
83
  requirements:
97
84
  - - ! '>='
@@ -99,10 +86,15 @@ dependencies:
99
86
  version: '0'
100
87
  type: :development
101
88
  prerelease: false
102
- version_requirements: *70097168066460
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
103
95
  - !ruby/object:Gem::Dependency
104
96
  name: simplecov-gem-adapter
105
- requirement: &70097168065260 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
106
98
  none: false
107
99
  requirements:
108
100
  - - ! '>='
@@ -110,7 +102,12 @@ dependencies:
110
102
  version: '0'
111
103
  type: :development
112
104
  prerelease: false
113
- version_requirements: *70097168065260
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
114
111
  description: ! 'SchemaPlus is an ActiveRecord extension that provides enhanced capabilities
115
112
  for schema definition and querying, including: enhanced and more DRY index capabilities,
116
113
  support and automation for foreign key constraints, and support for views.'
@@ -127,14 +124,11 @@ files:
127
124
  - MIT-LICENSE
128
125
  - README.rdoc
129
126
  - Rakefile
130
- - gemfiles/Gemfile.rails-2.3
131
- - gemfiles/Gemfile.rails-2.3.lock
132
- - gemfiles/Gemfile.rails-3.0
133
- - gemfiles/Gemfile.rails-3.0.lock
134
- - gemfiles/Gemfile.rails-3.1
135
- - gemfiles/Gemfile.rails-3.1.lock
136
- - gemfiles/Gemfile.rails-3.2
137
- - gemfiles/Gemfile.rails-3.2.lock
127
+ - gemfiles/rails-3.2/Gemfile.base
128
+ - gemfiles/rails-3.2/Gemfile.mysql
129
+ - gemfiles/rails-3.2/Gemfile.mysql2
130
+ - gemfiles/rails-3.2/Gemfile.postgresql
131
+ - gemfiles/rails-3.2/Gemfile.sqlite3
138
132
  - init.rb
139
133
  - lib/rails/tasks/database.rake
140
134
  - lib/schema_plus.rb
@@ -149,6 +143,7 @@ files:
149
143
  - lib/schema_plus/active_record/connection_adapters/schema_statements.rb
150
144
  - lib/schema_plus/active_record/connection_adapters/sqlite3_adapter.rb
151
145
  - lib/schema_plus/active_record/connection_adapters/table_definition.rb
146
+ - lib/schema_plus/active_record/db_default.rb
152
147
  - lib/schema_plus/active_record/foreign_keys.rb
153
148
  - lib/schema_plus/active_record/schema.rb
154
149
  - lib/schema_plus/active_record/schema_dumper.rb
@@ -168,10 +163,7 @@ files:
168
163
  - spec/index_definition_spec.rb
169
164
  - spec/index_spec.rb
170
165
  - spec/migration_spec.rb
171
- - spec/models/comment.rb
172
- - spec/models/post.rb
173
- - spec/models/user.rb
174
- - spec/rails3_migration_spec.rb
166
+ - spec/multiple_schemas_spec.rb
175
167
  - spec/schema/auto_schema.rb
176
168
  - spec/schema/core_schema.rb
177
169
  - spec/schema_dumper_spec.rb
@@ -203,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
195
  version: '0'
204
196
  requirements: []
205
197
  rubyforge_project: schema_plus
206
- rubygems_version: 1.8.10
198
+ rubygems_version: 1.8.24
207
199
  signing_key:
208
200
  specification_version: 3
209
201
  summary: Enhances ActiveRecord schema mechanism, including more DRY index creation
@@ -221,10 +213,7 @@ test_files:
221
213
  - spec/index_definition_spec.rb
222
214
  - spec/index_spec.rb
223
215
  - spec/migration_spec.rb
224
- - spec/models/comment.rb
225
- - spec/models/post.rb
226
- - spec/models/user.rb
227
- - spec/rails3_migration_spec.rb
216
+ - spec/multiple_schemas_spec.rb
228
217
  - spec/schema/auto_schema.rb
229
218
  - spec/schema/core_schema.rb
230
219
  - spec/schema_dumper_spec.rb