foreigner 1.1.6 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +9 -5
- data/lib/foreigner.rb +1 -0
- data/lib/foreigner/adapter.rb +4 -1
- data/lib/foreigner/connection_adapters/abstract/schema_definitions.rb +5 -5
- data/lib/foreigner/connection_adapters/abstract/schema_statements.rb +4 -4
- data/lib/foreigner/connection_adapters/noop_adapter.rb +7 -0
- data/test/foreigner/adapter_test.rb +11 -0
- data/test/{unit → foreigner/connection_adapters}/mysql2_adapter_test.rb +0 -0
- data/test/{unit → foreigner/connection_adapters}/mysql_adapter_test.rb +0 -0
- data/test/{unit → foreigner/connection_adapters}/postgresql_adapter_test.rb +0 -0
- data/test/{unit → foreigner/connection_adapters}/sql2003_test.rb +0 -0
- data/test/{unit → foreigner/migration}/command_recorder_test.rb +0 -0
- data/test/{unit → foreigner}/schema_dumper_test.rb +0 -0
- data/test/helper.rb +1 -0
- metadata +25 -13
data/README.rdoc
CHANGED
@@ -31,7 +31,7 @@ For example, given the following model:
|
|
31
31
|
end
|
32
32
|
|
33
33
|
class Post < ActiveRecord::Base
|
34
|
-
has_many :comments, :
|
34
|
+
has_many :comments, dependent: :delete_all
|
35
35
|
end
|
36
36
|
|
37
37
|
You should add a foreign key in your migration:
|
@@ -40,15 +40,15 @@ You should add a foreign key in your migration:
|
|
40
40
|
|
41
41
|
The :dependent option can be moved from the has_many definition to the foreign key:
|
42
42
|
|
43
|
-
add_foreign_key(:comments, :posts, :
|
43
|
+
add_foreign_key(:comments, :posts, dependent: :delete)
|
44
44
|
|
45
45
|
If the column is named article_id instead of post_id, use the :column option:
|
46
46
|
|
47
|
-
add_foreign_key(:comments, :posts, :
|
47
|
+
add_foreign_key(:comments, :posts, column: 'article_id')
|
48
48
|
|
49
49
|
A name can be specified for the foreign key constraint:
|
50
50
|
|
51
|
-
add_foreign_key(:comments, :posts, :
|
51
|
+
add_foreign_key(:comments, :posts, name: 'comment_article_foreign_key')
|
52
52
|
|
53
53
|
== Change Table Methods
|
54
54
|
|
@@ -57,7 +57,7 @@ Foreigner adds extra methods to change_table.
|
|
57
57
|
Add a missing foreign key to comments:
|
58
58
|
|
59
59
|
change_table :comments do |t|
|
60
|
-
t.foreign_key :posts, :
|
60
|
+
t.foreign_key :posts, dependent: :delete
|
61
61
|
end
|
62
62
|
|
63
63
|
Remove an unwanted foreign key:
|
@@ -66,6 +66,10 @@ Remove an unwanted foreign key:
|
|
66
66
|
t.remove_foreign_key :users
|
67
67
|
end
|
68
68
|
|
69
|
+
== Finding Missing Foreign Keys
|
70
|
+
|
71
|
+
Use {Immigrant}[https://github.com/jenseng/immigrant] to generate a migration that includes all missing foreign keys.
|
72
|
+
|
69
73
|
== License
|
70
74
|
|
71
75
|
Copyright (c) 2012 Matthew Higgins, released under the MIT license
|
data/lib/foreigner.rb
CHANGED
@@ -26,6 +26,7 @@ Foreigner::Adapter.register 'mysql2', 'foreigner/connection_adapters/mysql2_adap
|
|
26
26
|
Foreigner::Adapter.register 'jdbcmysql', 'foreigner/connection_adapters/mysql2_adapter'
|
27
27
|
Foreigner::Adapter.register 'postgresql', 'foreigner/connection_adapters/postgresql_adapter'
|
28
28
|
Foreigner::Adapter.register 'jdbcpostgresql', 'foreigner/connection_adapters/postgresql_adapter'
|
29
|
+
Foreigner::Adapter.register 'sqlite3', 'foreigner/connection_adapters/noop_adapter'
|
29
30
|
|
30
31
|
require 'foreigner/loader'
|
31
32
|
require 'foreigner/railtie' if defined?(Rails)
|
data/lib/foreigner/adapter.rb
CHANGED
@@ -11,11 +11,14 @@ module Foreigner
|
|
11
11
|
def load!
|
12
12
|
if registered.key?(configured_name)
|
13
13
|
require registered[configured_name]
|
14
|
+
else
|
15
|
+
p "Database adapter #{configured_name} not supported. Use:\n" +
|
16
|
+
"Foreigner::Adapter.register '#{configured_name}', 'path/to/adapter'"
|
14
17
|
end
|
15
18
|
end
|
16
19
|
|
17
20
|
def configured_name
|
18
|
-
ActiveRecord::Base.connection_pool.spec.config[:adapter]
|
21
|
+
@configured_name ||= ActiveRecord::Base.connection_pool.spec.config[:adapter]
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -22,11 +22,11 @@ module Foreigner
|
|
22
22
|
# ====== Creating a simple foreign key
|
23
23
|
# t.foreign_key(:people)
|
24
24
|
# ====== Defining the column
|
25
|
-
# t.foreign_key(:people, :
|
25
|
+
# t.foreign_key(:people, column: :sender_id)
|
26
26
|
# ====== Creating a named foreign key
|
27
|
-
# t.foreign_key(:people, :
|
27
|
+
# t.foreign_key(:people, column: :sender_id, name: 'sender_foreign_key')
|
28
28
|
# ====== Defining the column of the +to_table+.
|
29
|
-
# t.foreign_key(:people, :
|
29
|
+
# t.foreign_key(:people, column: :sender_id, primary_key: :person_id)
|
30
30
|
def foreign_key(to_table, options = {})
|
31
31
|
@base.add_foreign_key(@table_name, to_table, options)
|
32
32
|
end
|
@@ -40,11 +40,11 @@ module Foreigner
|
|
40
40
|
# end
|
41
41
|
# ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
|
42
42
|
# change_table :accounts do |t|
|
43
|
-
# t.remove_foreign_key :
|
43
|
+
# t.remove_foreign_key column: :branch_id
|
44
44
|
# end
|
45
45
|
# ====== Remove the foreign key named party_foreign_key in the accounts table.
|
46
46
|
# change_table :accounts do |t|
|
47
|
-
# t.remove_index :
|
47
|
+
# t.remove_index name: :party_foreign_key
|
48
48
|
# end
|
49
49
|
def remove_foreign_key(options)
|
50
50
|
@base.remove_foreign_key(@table_name, options)
|
@@ -26,13 +26,13 @@ module Foreigner
|
|
26
26
|
# `comments_post_id_fk` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`)
|
27
27
|
#
|
28
28
|
# ====== Creating a named foreign key
|
29
|
-
# add_foreign_key(:comments, :posts, :
|
29
|
+
# add_foreign_key(:comments, :posts, name: 'comments_belongs_to_posts')
|
30
30
|
# generates
|
31
31
|
# ALTER TABLE `comments` ADD CONSTRAINT
|
32
32
|
# `comments_belongs_to_posts` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`)
|
33
33
|
#
|
34
34
|
# ====== Creating a cascading foreign_key on a custom column
|
35
|
-
# add_foreign_key(:people, :people, :
|
35
|
+
# add_foreign_key(:people, :people, column: 'best_friend_id', dependent: :nullify)
|
36
36
|
# generates
|
37
37
|
# ALTER TABLE `people` ADD CONSTRAINT
|
38
38
|
# `people_best_friend_id_fk` FOREIGN KEY (`best_friend_id`) REFERENCES `people` (`id`)
|
@@ -62,9 +62,9 @@ module Foreigner
|
|
62
62
|
# ====== Remove the suppliers_company_id_fk in the suppliers table.
|
63
63
|
# remove_foreign_key :suppliers, :companies
|
64
64
|
# ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
|
65
|
-
# remove_foreign_key :accounts, :
|
65
|
+
# remove_foreign_key :accounts, column: :branch_id
|
66
66
|
# ====== Remove the foreign key named party_foreign_key in the accounts table.
|
67
|
-
# remove_foreign_key :accounts, :
|
67
|
+
# remove_foreign_key :accounts, name: :party_foreign_key
|
68
68
|
def remove_foreign_key(from_table, options)
|
69
69
|
end
|
70
70
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class Foreigner::AdapterTest < ActiveSupport::TestCase
|
4
|
+
test "load" do
|
5
|
+
Foreigner::Adapter.register 'foo', 'bar'
|
6
|
+
Foreigner::Adapter.expects(:configured_name).at_least_once.returns('foo')
|
7
|
+
Foreigner::Adapter.expects(:require).with('bar')
|
8
|
+
|
9
|
+
Foreigner::Adapter.load!
|
10
|
+
end
|
11
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreigner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: activerecord
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: 3.1.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.1.0
|
36
46
|
description: Adds helpers to migrations and dumps foreign keys to schema.rb
|
37
47
|
email: developer@matthewhiggins.com
|
38
48
|
executables: []
|
@@ -49,6 +59,7 @@ files:
|
|
49
59
|
- lib/foreigner/connection_adapters/abstract/schema_statements.rb
|
50
60
|
- lib/foreigner/connection_adapters/mysql2_adapter.rb
|
51
61
|
- lib/foreigner/connection_adapters/mysql_adapter.rb
|
62
|
+
- lib/foreigner/connection_adapters/noop_adapter.rb
|
52
63
|
- lib/foreigner/connection_adapters/postgresql_adapter.rb
|
53
64
|
- lib/foreigner/connection_adapters/sql2003.rb
|
54
65
|
- lib/foreigner/loader.rb
|
@@ -56,13 +67,14 @@ files:
|
|
56
67
|
- lib/foreigner/railtie.rb
|
57
68
|
- lib/foreigner/schema_dumper.rb
|
58
69
|
- lib/foreigner.rb
|
70
|
+
- test/foreigner/adapter_test.rb
|
71
|
+
- test/foreigner/connection_adapters/mysql2_adapter_test.rb
|
72
|
+
- test/foreigner/connection_adapters/mysql_adapter_test.rb
|
73
|
+
- test/foreigner/connection_adapters/postgresql_adapter_test.rb
|
74
|
+
- test/foreigner/connection_adapters/sql2003_test.rb
|
75
|
+
- test/foreigner/migration/command_recorder_test.rb
|
76
|
+
- test/foreigner/schema_dumper_test.rb
|
59
77
|
- test/helper.rb
|
60
|
-
- test/unit/command_recorder_test.rb
|
61
|
-
- test/unit/mysql2_adapter_test.rb
|
62
|
-
- test/unit/mysql_adapter_test.rb
|
63
|
-
- test/unit/postgresql_adapter_test.rb
|
64
|
-
- test/unit/schema_dumper_test.rb
|
65
|
-
- test/unit/sql2003_test.rb
|
66
78
|
homepage: http://github.com/matthuhiggins/foreigner
|
67
79
|
licenses: []
|
68
80
|
post_install_message:
|
@@ -83,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
95
|
version: 1.3.5
|
84
96
|
requirements: []
|
85
97
|
rubyforge_project: foreigner
|
86
|
-
rubygems_version: 1.8.
|
98
|
+
rubygems_version: 1.8.24
|
87
99
|
signing_key:
|
88
100
|
specification_version: 3
|
89
101
|
summary: Foreign Keys for Rails
|