schema_associations 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +19 -9
- data/Gemfile +2 -0
- data/README.md +36 -29
- data/Rakefile +3 -42
- data/gemfiles/Gemfile.base +1 -1
- data/gemfiles/activerecord-4.2/Gemfile.base +3 -0
- data/gemfiles/activerecord-4.2/Gemfile.mysql2 +10 -0
- data/gemfiles/activerecord-4.2/Gemfile.postgresql +10 -0
- data/gemfiles/activerecord-4.2/Gemfile.sqlite3 +10 -0
- data/lib/schema_associations.rb +1 -1
- data/lib/schema_associations/active_record/associations.rb +13 -21
- data/lib/schema_associations/railtie.rb +1 -1
- data/lib/schema_associations/version.rb +1 -1
- data/schema_associations.gemspec +3 -3
- data/schema_dev.yml +11 -0
- data/spec/association_spec.rb +35 -35
- data/spec/schema_associations.sqlite3 +0 -0
- data/spec/spec_helper.rb +2 -2
- metadata +24 -23
- data/gemfiles/Gemfile.rails-3.2 +0 -3
- data/gemfiles/Gemfile.rails-4.0 +0 -3
- data/gemfiles/Gemfile.rails-4.1 +0 -3
- data/runspecs +0 -113
- data/spec/connection.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ab213fbc881aef8d05e0b3714f3a63a5de3bc39
|
4
|
+
data.tar.gz: c927672d92cc4b0107a7d81af6471a3dae77b146
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4a53470cb35f36d599e27ff8387ff123cbfd97932b5ab0361f0da13fe1d861d813e2a56739f823b8e7cda2782bd4298adb3759ace20cccdcf55cad621de7522
|
7
|
+
data.tar.gz: d700a6e564e723158fe0ea474820dc54467314dadd90e2fc0c0a4c2dd326b1e3af59d46b39463d451b03457597130ce03b6a4e22d5203188346eb95c32b1824e
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,12 +1,22 @@
|
|
1
|
+
# This file was auto-generated by the schema_dev tool, based on the data in
|
2
|
+
# ./schema_dev.yml
|
3
|
+
# Please do not edit this file; any changes will be overwritten next time
|
4
|
+
# schema_dev gets run.
|
5
|
+
---
|
6
|
+
sudo: false
|
1
7
|
rvm:
|
2
|
-
|
3
|
-
- 2.1.2
|
8
|
+
- 2.1.5
|
4
9
|
gemfile:
|
5
|
-
|
6
|
-
|
7
|
-
|
10
|
+
- gemfiles/activerecord-4.2/Gemfile.mysql2
|
11
|
+
- gemfiles/activerecord-4.2/Gemfile.postgresql
|
12
|
+
- gemfiles/activerecord-4.2/Gemfile.sqlite3
|
13
|
+
env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
|
14
|
+
addons:
|
15
|
+
postgresql: '9.4'
|
16
|
+
before_script: bundle exec rake create_databases
|
17
|
+
after_script: bundle exec rake drop_databases
|
18
|
+
script: bundle exec rake travis
|
8
19
|
notifications:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
- toby@ovod-everett.org
|
20
|
+
email:
|
21
|
+
- toby@ovod-everett.org
|
22
|
+
- ronen@barzel.org
|
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -4,9 +4,11 @@ SchemaAssociations is an ActiveRecord extension that keeps your model class
|
|
4
4
|
definitions simpler and more DRY, by automatically defining associations based
|
5
5
|
on the database schema.
|
6
6
|
|
7
|
-
[![Gem Version](https://badge.fury.io/rb/schema_associations.
|
8
|
-
[![Build Status](https://secure.travis-ci.org/
|
9
|
-
[![
|
7
|
+
[![Gem Version](https://badge.fury.io/rb/schema_associations.svg)](http://badge.fury.io/rb/schema_associations)
|
8
|
+
[![Build Status](https://secure.travis-ci.org/SchemaPlus/schema_associations.svg)](http://travis-ci.org/SchemaPlus/schema_associations)
|
9
|
+
[![Coverage Status](https://img.shields.io/coveralls/SchemaPlus/schema_associations.svg)](https://coveralls.io/r/SchemaPlus/schema_associations?branch=master)
|
10
|
+
[![Dependency Status](https://gemnasium.com/lomba/schema_associations.svg)](https://gemnasium.com/lomba/schema_associations)
|
11
|
+
|
10
12
|
|
11
13
|
## Overview
|
12
14
|
|
@@ -156,7 +158,7 @@ referencing table, suffixed with "as" the relationship name. An example
|
|
156
158
|
should make this clear...
|
157
159
|
|
158
160
|
Suppose your company hires interns, and each intern is assigned a manager and
|
159
|
-
a mentor, who are regular employees.
|
161
|
+
a mentor, who are regular employees.
|
160
162
|
|
161
163
|
create_table :interns do |t|
|
162
164
|
t.integer :manager_id, :references => :employees
|
@@ -253,7 +255,7 @@ turn off concise names globally or per-model, see [SchemaAssociations::Config](h
|
|
253
255
|
### Ordering `has_many` using `position`
|
254
256
|
|
255
257
|
If the target of a `has_many` association has a column named `position`,
|
256
|
-
SchemaAssociations will specify `:order => :position` for the association.
|
258
|
+
SchemaAssociations will specify `:order => :position` for the association.
|
257
259
|
That is,
|
258
260
|
|
259
261
|
create_table :comments do |t|
|
@@ -266,13 +268,13 @@ leads to
|
|
266
268
|
class Post < ActiveRecord::Base
|
267
269
|
has_many :comments, :order => :position
|
268
270
|
end
|
269
|
-
|
271
|
+
|
270
272
|
## Table names and model class names
|
271
273
|
|
272
|
-
SchemaAssociations determins the mode class name from the table name using the same convention (and helpers) that ActiveRecord uses. But sometimes you might be doing things differently. For example, in an engine you might have a prefix that goes in front of all table names, and the models might all be in a namespace.
|
274
|
+
SchemaAssociations determins the mode class name from the table name using the same convention (and helpers) that ActiveRecord uses. But sometimes you might be doing things differently. For example, in an engine you might have a prefix that goes in front of all table names, and the models might all be in a namespace.
|
273
275
|
|
274
276
|
To that end, SchemaAssociations lets you configure mappings from a table name prefix to a model class name prefix to use instead. For example, suppose your database had tables:
|
275
|
-
|
277
|
+
|
276
278
|
hpy_campers
|
277
279
|
hpy_go_lucky
|
278
280
|
|
@@ -280,12 +282,12 @@ The default model class names would be
|
|
280
282
|
|
281
283
|
HpyCampers
|
282
284
|
HpyGoLucky
|
283
|
-
|
285
|
+
|
284
286
|
But if instead you wanted
|
285
287
|
|
286
288
|
Happy::Campers
|
287
289
|
Happy::GoLucky
|
288
|
-
|
290
|
+
|
289
291
|
You could set up this mapping in `config/initializers/schema_associations.rb`:
|
290
292
|
|
291
293
|
SchemaPlus.setup do |config|
|
@@ -294,7 +296,7 @@ You could set up this mapping in `config/initializers/schema_associations.rb`:
|
|
294
296
|
|
295
297
|
Tables names that don't start with `hpy_` will continue to use the default determination.
|
296
298
|
|
297
|
-
You can set up multiple mappings. E.g. if you're using several engines they can each set up the mapping for their own moduels.
|
299
|
+
You can set up multiple mappings. E.g. if you're using several engines they can each set up the mapping for their own moduels.
|
298
300
|
|
299
301
|
You can set up a mapping from or to the empty string, in order to unconditionally add or remove prefixes from all model class names.
|
300
302
|
|
@@ -303,7 +305,7 @@ You can set up a mapping from or to the empty string, in order to unconditionall
|
|
303
305
|
|
304
306
|
If you're curious (or dubious) about what associations SchemaAssociations
|
305
307
|
defines, you can check the log file. For every assocation that
|
306
|
-
SchemaAssociations defines, it generates
|
308
|
+
SchemaAssociations defines, it generates a debug entry such as
|
307
309
|
|
308
310
|
[schema_associations] Post.has_many :comments, :class_name "Comment", :foreign_key "comment_id"
|
309
311
|
|
@@ -319,10 +321,17 @@ use cases that you logged).
|
|
319
321
|
|
320
322
|
SchemaAssociations is tested on all combinations of:
|
321
323
|
|
322
|
-
|
323
|
-
|
324
|
+
<!-- SCHEMA_DEV: MATRIX - begin -->
|
325
|
+
<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->
|
326
|
+
* ruby **2.1.5** with activerecord **4.2**, using **mysql2**, **postgresql** or **sqlite3**
|
327
|
+
|
328
|
+
<!-- SCHEMA_DEV: MATRIX - end -->
|
329
|
+
|
330
|
+
Notes:
|
324
331
|
|
325
|
-
|
332
|
+
* As of version 1.2.3, rails < 4.1 and ruby < 2.1 are no longer supported
|
333
|
+
* As of version 1.2.0, ruby 1.9.2 is no longer supported.
|
334
|
+
* As of version 1.0.0, ruby 1.8.7 and rails < 3.2 are no longer supported.
|
326
335
|
|
327
336
|
## Installation
|
328
337
|
|
@@ -336,23 +345,25 @@ or in a Gemfile
|
|
336
345
|
|
337
346
|
## Testing
|
338
347
|
|
339
|
-
SchemaAssociations is tested
|
340
|
-
|
341
|
-
tests, after you've forked & cloned:
|
348
|
+
SchemaAssociations is tested against the matrix of combinations. To run the full combo of
|
349
|
+
tests, after you've forked & cloned:
|
342
350
|
|
343
351
|
$ cd schema_associations
|
344
|
-
$
|
345
|
-
$
|
352
|
+
$ schema_dev bundle install
|
353
|
+
$ schema_dev rspec
|
346
354
|
|
347
|
-
|
348
|
-
specific file or example (rather than running the full suite) you can do, e.g.
|
349
|
-
|
350
|
-
$ ./runspecs [other options] --rspec -- spec/association_spec.rb -e 'base'
|
355
|
+
For more info, see [schema_dev](https://github.com/SchemaPlus/schema_dev)
|
351
356
|
|
352
357
|
Code coverage results will be in coverage/index.html -- it should be at 100% coverage.
|
353
358
|
|
354
359
|
## Release notes:
|
355
360
|
|
361
|
+
### 1.2.3
|
362
|
+
|
363
|
+
* Use schema_plus_foreign_keys rather than all of schema_plus, to eliminate unneeded dependancies. That limits us to AR >= 4.1 and ruby >= 2.1
|
364
|
+
* Fix deprecations
|
365
|
+
* Logging is now at `debug` level rather than `info` level
|
366
|
+
|
356
367
|
### 1.2.2
|
357
368
|
|
358
369
|
* Bug fix (Rails workaround) for STI: propagate associations to subclasses, since Rails might not, depending on the load order.
|
@@ -373,7 +384,7 @@ Code coverage results will be in coverage/index.html -- it should be at 100% cov
|
|
373
384
|
|
374
385
|
### 1.0.1
|
375
386
|
|
376
|
-
* Bug fix: use singular :inverse_of for :belongs_to of a :has_one
|
387
|
+
* Bug fix: use singular :inverse_of for :belongs_to of a :has_one
|
377
388
|
|
378
389
|
|
379
390
|
### 1.0.0
|
@@ -395,7 +406,3 @@ Code coverage results will be in coverage/index.html -- it should be at 100% cov
|
|
395
406
|
## License
|
396
407
|
|
397
408
|
This gem is released under the MIT license.
|
398
|
-
|
399
|
-
|
400
|
-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/lomba/schema_associations/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
401
|
-
|
data/Rakefile
CHANGED
@@ -2,9 +2,9 @@ require 'bundler'
|
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
RSpec::Core::RakeTask.new(:spec)
|
6
|
-
|
7
|
-
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
require 'schema_dev/tasks'
|
8
8
|
|
9
9
|
|
10
10
|
task :default => :spec
|
@@ -18,42 +18,3 @@ Rake::RDocTask.new do |rdoc|
|
|
18
18
|
rdoc.rdoc_files.include('README*')
|
19
19
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
20
20
|
end
|
21
|
-
|
22
|
-
namespace :postgresql do
|
23
|
-
desc 'Build the PostgreSQL test databases'
|
24
|
-
task :build_databases do
|
25
|
-
%x( createdb -E UTF8 schema_associations_unittest )
|
26
|
-
end
|
27
|
-
|
28
|
-
desc 'Drop the PostgreSQL test databases'
|
29
|
-
task :drop_databases do
|
30
|
-
%x( dropdb schema_associations_unittest )
|
31
|
-
end
|
32
|
-
|
33
|
-
desc 'Rebuild the PostgreSQL test databases'
|
34
|
-
task :rebuild_databases => [:drop_databases, :build_databases]
|
35
|
-
end
|
36
|
-
|
37
|
-
task :build_postgresql_databases => 'postgresql:build_databases'
|
38
|
-
task :drop_postgresql_databases => 'postgresql:drop_databases'
|
39
|
-
task :rebuild_postgresql_databases => 'postgresql:rebuild_databases'
|
40
|
-
|
41
|
-
MYSQL_DB_USER = 'schema_assoc'
|
42
|
-
namespace :mysql do
|
43
|
-
desc 'Build the MySQL test databases'
|
44
|
-
task :build_databases do
|
45
|
-
%x( echo "create DATABASE schema_associations_unittest DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci " | mysql --user=#{MYSQL_DB_USER})
|
46
|
-
end
|
47
|
-
|
48
|
-
desc 'Drop the MySQL test databases'
|
49
|
-
task :drop_databases do
|
50
|
-
%x( mysqladmin --user=#{MYSQL_DB_USER} -f drop schema_associations_unittest )
|
51
|
-
end
|
52
|
-
|
53
|
-
desc 'Rebuild the MySQL test databases'
|
54
|
-
task :rebuild_databases => [:drop_databases, :build_databases]
|
55
|
-
end
|
56
|
-
|
57
|
-
task :build_mysql_databases => 'mysql:build_databases'
|
58
|
-
task :drop_mysql_databases => 'mysql:drop_databases'
|
59
|
-
task :rebuild_mysql_databases => 'mysql:rebuild_databases'
|
data/gemfiles/Gemfile.base
CHANGED
data/lib/schema_associations.rb
CHANGED
@@ -83,9 +83,9 @@ module SchemaAssociations
|
|
83
83
|
return unless schema_associations_config.auto_create?
|
84
84
|
|
85
85
|
reverse_foreign_keys.each do | foreign_key |
|
86
|
-
if foreign_key.
|
86
|
+
if foreign_key.from_table =~ /^#{table_name}_(.*)$/ || foreign_key.from_table =~ /^(.*)_#{table_name}$/
|
87
87
|
other_table = $1
|
88
|
-
if other_table == other_table.pluralize and connection.columns(foreign_key.
|
88
|
+
if other_table == other_table.pluralize and connection.columns(foreign_key.from_table).any?{|col| col.name == "#{other_table.singularize}_id"}
|
89
89
|
_define_association(:has_and_belongs_to_many, foreign_key, other_table)
|
90
90
|
else
|
91
91
|
_define_association(:has_one_or_many, foreign_key)
|
@@ -101,12 +101,13 @@ module SchemaAssociations
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def _define_association(macro, fk, referencing_table_name = nil) #:nodoc:
|
104
|
-
|
104
|
+
column_names = Array.wrap(fk.column)
|
105
|
+
return unless column_names.size == 1
|
105
106
|
|
106
|
-
referencing_table_name ||= fk.
|
107
|
-
column_name =
|
107
|
+
referencing_table_name ||= fk.from_table
|
108
|
+
column_name = column_names.first
|
108
109
|
|
109
|
-
references_name = fk.
|
110
|
+
references_name = fk.to_table.singularize
|
110
111
|
referencing_name = referencing_table_name.singularize
|
111
112
|
|
112
113
|
referencing_class_name = _get_class_name(referencing_name)
|
@@ -120,7 +121,7 @@ module SchemaAssociations
|
|
120
121
|
case macro
|
121
122
|
when :has_and_belongs_to_many
|
122
123
|
name = names[:has_many]
|
123
|
-
opts = {:class_name => referencing_class_name, :join_table => fk.
|
124
|
+
opts = {:class_name => referencing_class_name, :join_table => fk.from_table, :foreign_key => column_name}
|
124
125
|
when :belongs_to
|
125
126
|
name = names[:belongs_to]
|
126
127
|
opts = {:class_name => references_class_name, :foreign_key => column_name}
|
@@ -144,31 +145,22 @@ module SchemaAssociations
|
|
144
145
|
macro = :has_many
|
145
146
|
name = names[:has_many]
|
146
147
|
if connection.columns(referencing_table_name).any?{ |col| col.name == 'position' }
|
147
|
-
|
148
|
-
|
149
|
-
else
|
150
|
-
scope_block = lambda { order :position }
|
151
|
-
argstr += "-> { order :position }, "
|
152
|
-
end
|
148
|
+
scope_block = lambda { order :position }
|
149
|
+
argstr += "-> { order :position }, "
|
153
150
|
end
|
154
151
|
end
|
155
152
|
end
|
156
153
|
argstr += opts.inspect[1...-1]
|
157
154
|
if (_filter_association(macro, name) && !_method_exists?(name))
|
158
|
-
|
159
|
-
_create_association(macro, name, argstr, opts.dup)
|
160
|
-
else
|
161
|
-
_create_association(macro, name, argstr, scope_block, opts.dup)
|
162
|
-
end
|
155
|
+
_create_association(macro, name, argstr, scope_block, opts.dup)
|
163
156
|
end
|
164
157
|
end
|
165
158
|
|
166
159
|
def _create_association(macro, name, argstr, *args)
|
167
|
-
logger.
|
160
|
+
logger.debug "[schema_associations] #{self.name || self.from_table.classify}.#{macro} #{name.inspect}, #{argstr}"
|
168
161
|
send macro, name, *args
|
169
|
-
case
|
162
|
+
case
|
170
163
|
when respond_to?(:subclasses) then subclasses
|
171
|
-
when respond_to?(:descendants) then descendants
|
172
164
|
end.each do |subclass|
|
173
165
|
subclass.send :_create_association, macro, name, argstr, *args
|
174
166
|
end
|
data/schema_associations.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Ronen Barzel", "Michał Łomnicki"]
|
10
10
|
s.email = ["ronen@barzel.org", "michal.lomnicki@gmail.com"]
|
11
|
-
s.homepage = "https://github.com/
|
11
|
+
s.homepage = "https://github.com/SchemaPlus/schema_associations"
|
12
12
|
s.summary = "ActiveRecord extension that automatically (DRY) creates associations based on the schema"
|
13
13
|
s.description = "SchemaAssociations extends ActiveRecord to automatically create associations by inspecting the database schema. This is more more DRY than the standard behavior, for which in addition to specifying the foreign key in the migration, you must also specify complementary associations in two model files (e.g. a :belongs_to and a :has_many)."
|
14
14
|
|
@@ -19,12 +19,12 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency("
|
22
|
+
s.add_dependency("schema_plus_foreign_keys", "~> 0.1")
|
23
23
|
|
24
|
+
s.add_development_dependency("schema_dev", "~> 3.5")
|
24
25
|
s.add_development_dependency("rake")
|
25
26
|
s.add_development_dependency("rdoc")
|
26
27
|
s.add_development_dependency("rspec")
|
27
|
-
s.add_development_dependency("sqlite3")
|
28
28
|
s.add_development_dependency("simplecov")
|
29
29
|
s.add_development_dependency("simplecov-gem-profile")
|
30
30
|
end
|
data/schema_dev.yml
ADDED
data/spec/association_spec.rb
CHANGED
@@ -11,7 +11,7 @@ describe ActiveRecord::Base do
|
|
11
11
|
before(:each) do
|
12
12
|
create_tables(
|
13
13
|
"posts", {}, {},
|
14
|
-
"comments", {}, { :post_id => {} }
|
14
|
+
"comments", {}, { :post_id => {foreign_key: true} }
|
15
15
|
)
|
16
16
|
class Post < ActiveRecord::Base ; end
|
17
17
|
class Comment < ActiveRecord::Base ; end
|
@@ -72,11 +72,11 @@ describe ActiveRecord::Base do
|
|
72
72
|
"owners", {}, {},
|
73
73
|
"colors", {}, {},
|
74
74
|
"widgets", {}, {
|
75
|
-
:owner_id => {},
|
75
|
+
:owner_id => { foreign_key: true },
|
76
76
|
},
|
77
|
-
"parts", {}, { :widget_id => {} },
|
78
|
-
"manifests", {}, { :widget_id => { :index => {:unique => true}} },
|
79
|
-
"colors_widgets", {:id => false}, { :widget_id => {}, :color_id => {} }
|
77
|
+
"parts", {}, { :widget_id => { foreign_key: true } },
|
78
|
+
"manifests", {}, { :widget_id => { foreign_key: true, :index => {:unique => true}} },
|
79
|
+
"colors_widgets", {:id => false}, { :widget_id => { foreign_key: true}, :color_id => { foreign_key: true} }
|
80
80
|
)
|
81
81
|
end
|
82
82
|
|
@@ -95,70 +95,70 @@ describe ActiveRecord::Base do
|
|
95
95
|
check_reflections(:owner => true, :colors => true, :parts => true, :manifest => true)
|
96
96
|
end
|
97
97
|
|
98
|
-
it "should respect :only" do
|
98
|
+
it "should respect :only" do
|
99
99
|
class Widget < ActiveRecord::Base
|
100
100
|
schema_associations :only => :owner
|
101
101
|
end
|
102
102
|
check_reflections(:owner => true, :colors => false, :parts => false, :manifest => false)
|
103
103
|
end
|
104
104
|
|
105
|
-
it "should respect :except" do
|
105
|
+
it "should respect :except" do
|
106
106
|
class Widget < ActiveRecord::Base
|
107
107
|
schema_associations :except => :owner
|
108
108
|
end
|
109
109
|
check_reflections(:owner => false, :colors => true, :parts => true, :manifest => true)
|
110
110
|
end
|
111
111
|
|
112
|
-
it "should respect :only_type :belongs_to" do
|
112
|
+
it "should respect :only_type :belongs_to" do
|
113
113
|
class Widget < ActiveRecord::Base
|
114
114
|
schema_associations :only_type => :belongs_to
|
115
115
|
end
|
116
116
|
check_reflections(:owner => true, :colors => false, :parts => false, :manifest => false)
|
117
117
|
end
|
118
118
|
|
119
|
-
it "should respect :except_type :belongs_to" do
|
119
|
+
it "should respect :except_type :belongs_to" do
|
120
120
|
class Widget < ActiveRecord::Base
|
121
121
|
schema_associations :except_type => :belongs_to
|
122
122
|
end
|
123
123
|
check_reflections(:owner => false, :colors => true, :parts => true, :manifest => true)
|
124
124
|
end
|
125
125
|
|
126
|
-
it "should respect :only_type :has_many" do
|
126
|
+
it "should respect :only_type :has_many" do
|
127
127
|
class Widget < ActiveRecord::Base
|
128
128
|
schema_associations :only_type => :has_many
|
129
129
|
end
|
130
130
|
check_reflections(:owner => false, :colors => false, :parts => true, :manifest => false)
|
131
131
|
end
|
132
132
|
|
133
|
-
it "should respect :except_type :has_many" do
|
133
|
+
it "should respect :except_type :has_many" do
|
134
134
|
class Widget < ActiveRecord::Base
|
135
135
|
schema_associations :except_type => :has_many
|
136
136
|
end
|
137
137
|
check_reflections(:owner => true, :colors => true, :parts => false, :manifest => true)
|
138
138
|
end
|
139
139
|
|
140
|
-
it "should respect :only_type :has_one" do
|
140
|
+
it "should respect :only_type :has_one" do
|
141
141
|
class Widget < ActiveRecord::Base
|
142
142
|
schema_associations :only_type => :has_one
|
143
143
|
end
|
144
144
|
check_reflections(:owner => false, :colors => false, :parts => false, :manifest => true)
|
145
145
|
end
|
146
146
|
|
147
|
-
it "should respect :except_type :has_one" do
|
147
|
+
it "should respect :except_type :has_one" do
|
148
148
|
class Widget < ActiveRecord::Base
|
149
149
|
schema_associations :except_type => :has_one
|
150
150
|
end
|
151
151
|
check_reflections(:owner => true, :colors => true, :parts => true, :manifest => false)
|
152
152
|
end
|
153
153
|
|
154
|
-
it "should respect :only_type :has_and_belongs_to_many" do
|
154
|
+
it "should respect :only_type :has_and_belongs_to_many" do
|
155
155
|
class Widget < ActiveRecord::Base
|
156
156
|
schema_associations :only_type => :has_and_belongs_to_many
|
157
157
|
end
|
158
158
|
check_reflections(:owner => false, :colors => true, :parts => false, :manifest => false)
|
159
159
|
end
|
160
160
|
|
161
|
-
it "should respect :except_type :has_and_belongs_to_many" do
|
161
|
+
it "should respect :except_type :has_and_belongs_to_many" do
|
162
162
|
class Widget < ActiveRecord::Base
|
163
163
|
schema_associations :except_type => :has_and_belongs_to_many
|
164
164
|
end
|
@@ -172,7 +172,7 @@ describe ActiveRecord::Base do
|
|
172
172
|
with_associations_auto_create(true) do
|
173
173
|
create_tables(
|
174
174
|
"posts", {}, {},
|
175
|
-
"comments", {}, { :post_id => {} }
|
175
|
+
"comments", {}, { :post_id => {foreign_key: true} }
|
176
176
|
)
|
177
177
|
class Post < ActiveRecord::Base
|
178
178
|
schema_associations :auto_create => false
|
@@ -188,7 +188,7 @@ describe ActiveRecord::Base do
|
|
188
188
|
with_associations_auto_create(false) do
|
189
189
|
create_tables(
|
190
190
|
"posts", {}, {},
|
191
|
-
"comments", {}, { :post_id => {} }
|
191
|
+
"comments", {}, { :post_id => {foreign_key: true} }
|
192
192
|
)
|
193
193
|
class Post < ActiveRecord::Base
|
194
194
|
schema_associations :auto_create => true
|
@@ -203,7 +203,7 @@ describe ActiveRecord::Base do
|
|
203
203
|
with_associations_auto_create(false) do
|
204
204
|
create_tables(
|
205
205
|
"posts", {}, {},
|
206
|
-
"comments", {}, { :post_id => {} }
|
206
|
+
"comments", {}, { :post_id => {foreign_key: true} }
|
207
207
|
)
|
208
208
|
class Post < ActiveRecord::Base
|
209
209
|
schema_associations
|
@@ -220,7 +220,7 @@ describe ActiveRecord::Base do
|
|
220
220
|
before(:each) do
|
221
221
|
create_tables(
|
222
222
|
"posts", {}, {},
|
223
|
-
"comments", {}, { :post_id => {:index => { :unique => true} } }
|
223
|
+
"comments", {}, { :post_id => {foreign_key: true, :index => { :unique => true} } }
|
224
224
|
)
|
225
225
|
class Post < ActiveRecord::Base ; end
|
226
226
|
class Comment < ActiveRecord::Base ; end
|
@@ -247,7 +247,7 @@ describe ActiveRecord::Base do
|
|
247
247
|
before(:each) do
|
248
248
|
create_tables(
|
249
249
|
"posts", {}, {},
|
250
|
-
"comments", {}, { :subject_post_id => { :
|
250
|
+
"comments", {}, { :subject_post_id => { foreign_key: { references: "posts" }} }
|
251
251
|
)
|
252
252
|
class Post < ActiveRecord::Base ; end
|
253
253
|
class Comment < ActiveRecord::Base ; end
|
@@ -275,7 +275,7 @@ describe ActiveRecord::Base do
|
|
275
275
|
before(:each) do
|
276
276
|
create_tables(
|
277
277
|
"posts", {}, {},
|
278
|
-
"comments", {}, { :post_cited => { :references
|
278
|
+
"comments", {}, { :post_cited => { foreign_key: {references: "posts" }} }
|
279
279
|
)
|
280
280
|
class Post < ActiveRecord::Base ; end
|
281
281
|
class Comment < ActiveRecord::Base ; end
|
@@ -303,7 +303,7 @@ describe ActiveRecord::Base do
|
|
303
303
|
before(:each) do
|
304
304
|
create_tables(
|
305
305
|
"posts", {}, {},
|
306
|
-
"comments", {}, { :subject => {:
|
306
|
+
"comments", {}, { :subject => {foreign_key: { references: "posts" }} }
|
307
307
|
)
|
308
308
|
class Post < ActiveRecord::Base ; end
|
309
309
|
class Comment < ActiveRecord::Base ; end
|
@@ -331,7 +331,7 @@ describe ActiveRecord::Base do
|
|
331
331
|
with_associations_config(:table_prefix_map => { "wooga_" => "Happy"} ) do
|
332
332
|
create_tables(
|
333
333
|
"wooga_posts", {}, {},
|
334
|
-
"wooga_comments", {}, { :wooga_post_id => { :
|
334
|
+
"wooga_comments", {}, { :wooga_post_id => { foreign_key: true} }
|
335
335
|
)
|
336
336
|
class HappyPost < ActiveRecord::Base ; self.table_name = 'wooga_posts' ; end
|
337
337
|
class HappyComment < ActiveRecord::Base ; self.table_name = 'wooga_comments' ; end
|
@@ -345,7 +345,7 @@ describe ActiveRecord::Base do
|
|
345
345
|
before(:each) do
|
346
346
|
create_tables(
|
347
347
|
"posts", {}, {},
|
348
|
-
"comments", {}, { :post_id => {} }
|
348
|
+
"comments", {}, { :post_id => { foreign_key: true} }
|
349
349
|
)
|
350
350
|
class Post < ActiveRecord::Base ; end
|
351
351
|
class Comment < ActiveRecord::Base ; end
|
@@ -369,7 +369,7 @@ describe ActiveRecord::Base do
|
|
369
369
|
before(:each) do
|
370
370
|
create_tables(
|
371
371
|
"posts", {}, {},
|
372
|
-
"comments", {}, { :post_id => {}, :position => {} }
|
372
|
+
"comments", {}, { :post_id => {foreign_key: true}, :position => {} }
|
373
373
|
)
|
374
374
|
class Post < ActiveRecord::Base ; end
|
375
375
|
class Comment < ActiveRecord::Base ; end
|
@@ -432,7 +432,7 @@ describe ActiveRecord::Base do
|
|
432
432
|
|
433
433
|
before(:each) do
|
434
434
|
create_tables(
|
435
|
-
"nodes", {
|
435
|
+
"nodes", {}, { :parent_id => { foreign_key: true} }
|
436
436
|
)
|
437
437
|
end
|
438
438
|
|
@@ -458,7 +458,7 @@ describe ActiveRecord::Base do
|
|
458
458
|
def prefix_one
|
459
459
|
create_tables(
|
460
460
|
"posts", {}, {},
|
461
|
-
"post_comments", {}, { :post_id => {} }
|
461
|
+
"post_comments", {}, { :post_id => { foreign_key: true} }
|
462
462
|
)
|
463
463
|
Object.const_set(:Post, Class.new(ActiveRecord::Base))
|
464
464
|
Object.const_set(:PostComment, Class.new(ActiveRecord::Base))
|
@@ -467,7 +467,7 @@ describe ActiveRecord::Base do
|
|
467
467
|
def suffix_one
|
468
468
|
create_tables(
|
469
469
|
"posts", {}, {},
|
470
|
-
"comment_posts", {}, { :post_id => {} }
|
470
|
+
"comment_posts", {}, { :post_id => { foreign_key: true} }
|
471
471
|
)
|
472
472
|
Object.const_set(:Post, Class.new(ActiveRecord::Base))
|
473
473
|
Object.const_set(:CommentPost, Class.new(ActiveRecord::Base))
|
@@ -476,7 +476,7 @@ describe ActiveRecord::Base do
|
|
476
476
|
def prefix_both
|
477
477
|
create_tables(
|
478
478
|
"blog_page_posts", {}, {},
|
479
|
-
"blog_page_comments", {}, { :blog_page_post_id => {} }
|
479
|
+
"blog_page_comments", {}, { :blog_page_post_id => { foreign_key: true} }
|
480
480
|
)
|
481
481
|
Object.const_set(:BlogPagePost, Class.new(ActiveRecord::Base))
|
482
482
|
Object.const_set(:BlogPageComment, Class.new(ActiveRecord::Base))
|
@@ -554,7 +554,7 @@ describe ActiveRecord::Base do
|
|
554
554
|
create_tables(
|
555
555
|
"posts", {}, {},
|
556
556
|
"tags", {}, {},
|
557
|
-
"posts_tags", {:id => false}, { :post_id => {}, :tag_id => {}}
|
557
|
+
"posts_tags", {:id => false}, { :post_id => { foreign_key: true}, :tag_id => { foreign_key: true}}
|
558
558
|
)
|
559
559
|
class Post < ActiveRecord::Base ; end
|
560
560
|
class Tag < ActiveRecord::Base ; end
|
@@ -572,7 +572,7 @@ describe ActiveRecord::Base do
|
|
572
572
|
before(:each) do
|
573
573
|
create_tables(
|
574
574
|
"types", {}, {},
|
575
|
-
"posts", {}, {:type_id => {}}
|
575
|
+
"posts", {}, {:type_id => { foreign_key: true}}
|
576
576
|
)
|
577
577
|
end
|
578
578
|
it "should define association normally if no existing method is defined" do
|
@@ -614,9 +614,9 @@ describe ActiveRecord::Base do
|
|
614
614
|
before(:each) do
|
615
615
|
create_tables(
|
616
616
|
"posts", {}, {},
|
617
|
-
"comments", {}, { :post_id => {}, :type => {coltype: :string} },
|
617
|
+
"comments", {}, { :post_id => { foreign_key: true}, :type => {coltype: :string} },
|
618
618
|
"citers", {}, {},
|
619
|
-
"citations", {}, { :comment_id => {}, :citer_id => {}}
|
619
|
+
"citations", {}, { :comment_id => { foreign_key: true}, :citer_id => { foreign_key: true}}
|
620
620
|
)
|
621
621
|
class Post < ActiveRecord::Base ; end
|
622
622
|
class Comment < ActiveRecord::Base ; end
|
@@ -643,7 +643,7 @@ describe ActiveRecord::Base do
|
|
643
643
|
before(:each) do
|
644
644
|
create_tables(
|
645
645
|
"posts", {}, {},
|
646
|
-
"comments", {}, { :post_id => {} }
|
646
|
+
"comments", {}, { :post_id => { foreign_key: true} }
|
647
647
|
)
|
648
648
|
class Post < ActiveRecord::Base ; end
|
649
649
|
class Comment < ActiveRecord::Base ; end
|
@@ -676,7 +676,7 @@ describe ActiveRecord::Base do
|
|
676
676
|
def create_tables(*table_defs)
|
677
677
|
ActiveRecord::Migration.suppress_messages do
|
678
678
|
ActiveRecord::Base.connection.tables.each do |table|
|
679
|
-
ActiveRecord::Migration.drop_table table
|
679
|
+
ActiveRecord::Migration.drop_table table, force: :cascade
|
680
680
|
end
|
681
681
|
table_defs.each_slice(3) do |table_name, opts, columns_with_options|
|
682
682
|
ActiveRecord::Migration.create_table table_name, opts do |t|
|
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -9,9 +9,9 @@ require 'rspec'
|
|
9
9
|
require 'active_record'
|
10
10
|
require 'schema_associations'
|
11
11
|
require 'logger'
|
12
|
-
require '
|
12
|
+
require 'schema_dev/rspec'
|
13
13
|
|
14
|
-
|
14
|
+
SchemaDev::Rspec::setup_db
|
15
15
|
|
16
16
|
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
|
17
17
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schema_associations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronen Barzel
|
@@ -9,38 +9,38 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-09-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: schema_plus_foreign_keys
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1
|
20
|
+
version: '0.1'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1
|
27
|
+
version: '0.1'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: schema_dev
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '3.5'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '3.5'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: rdoc
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
@@ -68,7 +68,7 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
@@ -123,24 +123,26 @@ extra_rdoc_files: []
|
|
123
123
|
files:
|
124
124
|
- ".gitignore"
|
125
125
|
- ".travis.yml"
|
126
|
+
- Gemfile
|
126
127
|
- MIT-LICENSE
|
127
128
|
- README.md
|
128
129
|
- Rakefile
|
129
130
|
- gemfiles/Gemfile.base
|
130
|
-
- gemfiles/
|
131
|
-
- gemfiles/
|
132
|
-
- gemfiles/
|
131
|
+
- gemfiles/activerecord-4.2/Gemfile.base
|
132
|
+
- gemfiles/activerecord-4.2/Gemfile.mysql2
|
133
|
+
- gemfiles/activerecord-4.2/Gemfile.postgresql
|
134
|
+
- gemfiles/activerecord-4.2/Gemfile.sqlite3
|
133
135
|
- init.rb
|
134
136
|
- lib/schema_associations.rb
|
135
137
|
- lib/schema_associations/active_record/associations.rb
|
136
138
|
- lib/schema_associations/railtie.rb
|
137
139
|
- lib/schema_associations/version.rb
|
138
|
-
- runspecs
|
139
140
|
- schema_associations.gemspec
|
141
|
+
- schema_dev.yml
|
140
142
|
- spec/association_spec.rb
|
141
|
-
- spec/
|
143
|
+
- spec/schema_associations.sqlite3
|
142
144
|
- spec/spec_helper.rb
|
143
|
-
homepage: https://github.com/
|
145
|
+
homepage: https://github.com/SchemaPlus/schema_associations
|
144
146
|
licenses: []
|
145
147
|
metadata: {}
|
146
148
|
post_install_message:
|
@@ -166,6 +168,5 @@ summary: ActiveRecord extension that automatically (DRY) creates associations ba
|
|
166
168
|
on the schema
|
167
169
|
test_files:
|
168
170
|
- spec/association_spec.rb
|
169
|
-
- spec/
|
171
|
+
- spec/schema_associations.sqlite3
|
170
172
|
- spec/spec_helper.rb
|
171
|
-
has_rdoc:
|
data/gemfiles/Gemfile.rails-3.2
DELETED
data/gemfiles/Gemfile.rails-4.0
DELETED
data/gemfiles/Gemfile.rails-4.1
DELETED
data/runspecs
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'optparse'
|
4
|
-
require 'ostruct'
|
5
|
-
require 'shellwords'
|
6
|
-
require 'tempfile'
|
7
|
-
|
8
|
-
RUBY_VERSIONS = %W[1.9.3 2.1.2]
|
9
|
-
RAILS_VERSIONS = %W[3.2 4.0 4.1]
|
10
|
-
|
11
|
-
o = OpenStruct.new
|
12
|
-
o.ruby_versions = RUBY_VERSIONS
|
13
|
-
o.rails_versions = RAILS_VERSIONS
|
14
|
-
|
15
|
-
OptionParser.new do |opts|
|
16
|
-
opts.banner = "Usage: #{$0} [options]"
|
17
|
-
|
18
|
-
opts.on("-n", "--dry-run", "Do a dry run without executing actions") do |v|
|
19
|
-
o.dry_run = true
|
20
|
-
end
|
21
|
-
|
22
|
-
opts.on("--update", "Update gem dependencies") do |v|
|
23
|
-
o.update = v
|
24
|
-
end
|
25
|
-
|
26
|
-
opts.on("--install", "Install gem dependencies") do |v|
|
27
|
-
o.install = v
|
28
|
-
end
|
29
|
-
|
30
|
-
opts.on("--ruby version", String, "Choose which version(s) of ruby to run. Default is: #{o.ruby_versions.join(' ')}") do |ruby|
|
31
|
-
o.ruby_versions = ruby.split(' ')
|
32
|
-
end
|
33
|
-
|
34
|
-
opts.on("--rails version", String, "Choose which version(s) of rails to run. Default is: #{o.rails_versions.join(' ')}") do |rails|
|
35
|
-
o.rails_versions = rails.split(' ')
|
36
|
-
end
|
37
|
-
|
38
|
-
opts.on("--quick", "quick run ruby #{RUBY_VERSIONS.last} and rails #{RAILS_VERSIONS.last}") do
|
39
|
-
o.ruby_versions = [RUBY_VERSIONS.last]
|
40
|
-
o.rails_versions = [RAILS_VERSIONS.last]
|
41
|
-
end
|
42
|
-
|
43
|
-
opts.on("--rspec", "run rspec rather than rake") do |v|
|
44
|
-
o.rspec = v
|
45
|
-
end
|
46
|
-
|
47
|
-
end.parse!
|
48
|
-
|
49
|
-
|
50
|
-
Combo = Struct.new(:ruby, :rails)
|
51
|
-
|
52
|
-
combos = o.ruby_versions.product(o.rails_versions).map{|product| Combo.new(*product)}.select {|combo|
|
53
|
-
case
|
54
|
-
when combo.rails >= "3.2" && combo.ruby <= "1.8.7" then false # no longer happens, just keeping it as an example
|
55
|
-
else true
|
56
|
-
end
|
57
|
-
}
|
58
|
-
|
59
|
-
if system("which -s rvm")
|
60
|
-
# using rvm
|
61
|
-
def ruby_version_selector(ruby)
|
62
|
-
"rvm #{ruby} do"
|
63
|
-
end
|
64
|
-
else
|
65
|
-
# using rbenv.
|
66
|
-
#
|
67
|
-
# because we're running within a ruby program that was launched by
|
68
|
-
# rbenv, we already have various environment variables set up. need
|
69
|
-
# strip those out so that the forked shell can run a diifferent ruby
|
70
|
-
# version than the one we're in now.
|
71
|
-
ENV['PATH'] = ENV['PATH'].split(':').reject{|dir| dir =~ %r{/\.?rbenv/(?!shims)}}.join(':')
|
72
|
-
ENV['GEM_PATH'] = ENV['GEM_PATH'].split(':').reject{|dir| dir =~ %r{/\.?rbenv}}.join(':') unless ENV['GEM_PATH'].nil?
|
73
|
-
ENV['RBENV_DIR'] = nil
|
74
|
-
ENV['RBENV_HOOK_PATH'] = nil
|
75
|
-
|
76
|
-
def ruby_version_selector(ruby)
|
77
|
-
@versions ||= `rbenv versions --bare`.split
|
78
|
-
version = @versions.select{|v| v.start_with? ruby}.last || abort("no ruby version '#{ruby}' installed in rbenv")
|
79
|
-
"RBENV_VERSION=#{version}"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
GEMFILES_DIR = File.expand_path('../gemfiles', __FILE__)
|
84
|
-
errs = []
|
85
|
-
combos.each_with_index do |combo, n|
|
86
|
-
ruby = combo.ruby
|
87
|
-
rails = combo.rails
|
88
|
-
|
89
|
-
cmd = case
|
90
|
-
when o.update
|
91
|
-
"bundle update"
|
92
|
-
when o.install
|
93
|
-
"bundle install"
|
94
|
-
when o.rspec
|
95
|
-
"bundle exec rspec"
|
96
|
-
else
|
97
|
-
"bundle exec rake spec"
|
98
|
-
end
|
99
|
-
|
100
|
-
command = %Q{BUNDLE_GEMFILE="#{File.join(GEMFILES_DIR, "Gemfile.rails-#{rails}")}" #{ruby_version_selector(ruby)} #{cmd} #{Shellwords.join(ARGV)}}
|
101
|
-
|
102
|
-
puts "\n\n*** ruby version #{ruby} - rails version #{rails} [#{n+1} of #{combos.size}]\n\n#{command}"
|
103
|
-
|
104
|
-
next if o.dry_run
|
105
|
-
|
106
|
-
Tempfile.open('runspecs') do |file|
|
107
|
-
system("(#{command}) 2>&1 | tee #{file.path}")
|
108
|
-
file.rewind
|
109
|
-
errs << "ruby #{ruby}, rails #{rails}" if file.readlines.grep(/(^Failed examples)|(rake aborted)/).any?
|
110
|
-
end
|
111
|
-
end
|
112
|
-
puts errs.any? ? "\n*** #{errs.size} failures:\n\t#{errs.join("\n\t")}" : "\n*** #{combos.size > 1 ? 'all versions' : 'spec'} succeeded ***" unless o.dry_run
|
113
|
-
exit !errs.any?
|
data/spec/connection.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
ActiveRecord::Base.configurations = {
|
3
|
-
'schema_associations' => {
|
4
|
-
:adapter => 'sqlite3',
|
5
|
-
:database => File.expand_path('schema_associations.sqlite3', File.dirname(__FILE__)),
|
6
|
-
}
|
7
|
-
|
8
|
-
}
|
9
|
-
|
10
|
-
ActiveRecord::Base.establish_connection :schema_associations
|
11
|
-
ActiveRecord::Base.connection.execute "PRAGMA synchronous = OFF"
|