foreigner 1.5.0 → 1.6.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/foreigner/adapter.rb +9 -0
- data/lib/foreigner/connection_adapters/abstract/schema_statements.rb +3 -3
- data/lib/foreigner/connection_adapters/mysql2_adapter.rb +2 -8
- data/lib/foreigner/connection_adapters/postgresql_adapter.rb +2 -8
- data/lib/foreigner/connection_adapters/sql2003.rb +12 -2
- metadata +9 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6267757603fa3cc7daf2d7c9fb0cd5c3c0b5de57
|
|
4
|
+
data.tar.gz: 59ba0f7366cbfbbc9c315c6a4f3141c7ccefd887
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0692abaca90f8bf9afe7a1b034062741d1cb6288816f7491aac15e566392121338dab6814bd94adf3dabb0a1acd0262d1f62af938cc34030947be52ca26f3736
|
|
7
|
+
data.tar.gz: 17fd7783a3127006a0a2284f4c82ea4960fd81115c6a56c9fff3a2159952cf18b8aac1f7f8da1842e8f514308f87b38c6b0acc2e3e5b4dac7421e25fab3da8b6
|
data/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Foreigner adds two methods to migrations.
|
|
|
22
22
|
* `add_foreign_key(from_table, to_table, options)`
|
|
23
23
|
* `remove_foreign_key(from_table, options)`
|
|
24
24
|
|
|
25
|
-
(Options are documented in `connection_adapters/abstract/
|
|
25
|
+
(Options are documented in `connection_adapters/abstract/schema_statements.rb`):
|
|
26
26
|
|
|
27
27
|
For example, given the following model:
|
|
28
28
|
```ruby
|
data/lib/foreigner/adapter.rb
CHANGED
|
@@ -20,6 +20,15 @@ module Foreigner
|
|
|
20
20
|
def configured_name
|
|
21
21
|
@configured_name ||= ActiveRecord::Base.connection_pool.spec.config[:adapter]
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
def safe_include(adapter_class_name, foreigner_module)
|
|
25
|
+
ActiveRecord::ConnectionAdapters.const_get(adapter_class_name).class_eval do
|
|
26
|
+
unless ancestors.include? foreigner_module
|
|
27
|
+
include foreigner_module
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
rescue
|
|
31
|
+
end
|
|
23
32
|
end
|
|
24
33
|
end
|
|
25
34
|
end
|
|
@@ -32,12 +32,12 @@ module Foreigner
|
|
|
32
32
|
# foreign_key_exists?(:suppliers, :companies)
|
|
33
33
|
#
|
|
34
34
|
# # Check a foreign key with a custom name exists
|
|
35
|
-
# foreign_key_exists?(:suppliers, name: "fk_company_id"
|
|
35
|
+
# foreign_key_exists?(:suppliers, name: "fk_company_id")
|
|
36
36
|
#
|
|
37
37
|
# # Check a foreign key on a column
|
|
38
|
-
# foreign_key_exists?(:suppliers, column: "company_id"
|
|
38
|
+
# foreign_key_exists?(:suppliers, column: "company_id")
|
|
39
39
|
#
|
|
40
|
-
def foreign_key_exists?(table_name,
|
|
40
|
+
def foreign_key_exists?(table_name, options)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# Adds a new foreign key to the +from_table+, referencing the primary key of +to_table+
|
|
@@ -40,11 +40,5 @@ module Foreigner
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
ActiveRecord::ConnectionAdapters.const_get(adapter).class_eval do
|
|
46
|
-
include Foreigner::ConnectionAdapters::Mysql2Adapter
|
|
47
|
-
end
|
|
48
|
-
rescue
|
|
49
|
-
end
|
|
50
|
-
end
|
|
43
|
+
Foreigner::Adapter.safe_include :JdbcAdapter, Foreigner::ConnectionAdapters::Mysql2Adapter
|
|
44
|
+
Foreigner::Adapter.safe_include :Mysql2Adapter, Foreigner::ConnectionAdapters::Mysql2Adapter
|
|
@@ -34,11 +34,5 @@ module Foreigner
|
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
ActiveRecord::ConnectionAdapters.const_get(adapter).class_eval do
|
|
40
|
-
include Foreigner::ConnectionAdapters::PostgreSQLAdapter
|
|
41
|
-
end
|
|
42
|
-
rescue
|
|
43
|
-
end
|
|
44
|
-
end
|
|
37
|
+
Foreigner::Adapter.safe_include :JdbcAdapter, Foreigner::ConnectionAdapters::PostgreSQLAdapter
|
|
38
|
+
Foreigner::Adapter.safe_include :PostgreSQLAdapter, Foreigner::ConnectionAdapters::PostgreSQLAdapter
|
|
@@ -31,16 +31,26 @@ module Foreigner
|
|
|
31
31
|
primary_key = options[:primary_key] || "id"
|
|
32
32
|
dependency = dependency_sql(options[:dependent])
|
|
33
33
|
|
|
34
|
+
proper_name = proper_table_name(to_table)
|
|
35
|
+
|
|
34
36
|
sql =
|
|
35
37
|
"ADD CONSTRAINT #{quote_column_name(foreign_key_name)} " +
|
|
36
38
|
"FOREIGN KEY (#{quote_column_name(column)}) " +
|
|
37
|
-
"REFERENCES #{quote_table_name(
|
|
39
|
+
"REFERENCES #{quote_table_name(proper_name)}(#{primary_key})"
|
|
38
40
|
sql << " #{dependency}" if dependency.present?
|
|
39
41
|
sql << " #{options[:options]}" if options[:options]
|
|
40
42
|
|
|
41
43
|
sql
|
|
42
44
|
end
|
|
43
45
|
|
|
46
|
+
def proper_table_name(to_table)
|
|
47
|
+
if ActiveRecord::Migration.instance_methods(false).include? :proper_table_name
|
|
48
|
+
ActiveRecord::Migration.new.proper_table_name(to_table)
|
|
49
|
+
else
|
|
50
|
+
ActiveRecord::Migrator.proper_table_name(to_table)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
44
54
|
def remove_foreign_key(table, options)
|
|
45
55
|
execute "ALTER TABLE #{quote_table_name(table)} #{remove_foreign_key_sql(table, options)}"
|
|
46
56
|
end
|
|
@@ -77,4 +87,4 @@ module Foreigner
|
|
|
77
87
|
end
|
|
78
88
|
end
|
|
79
89
|
end
|
|
80
|
-
end
|
|
90
|
+
end
|
metadata
CHANGED
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreigner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthew Higgins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-01-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: 3.0.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 3.0.0
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activerecord
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - '>='
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 3.1.0
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - '>='
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 3.1.0
|
|
41
27
|
description: Adds helpers to migrations and dumps foreign keys to schema.rb
|
|
42
28
|
email: developer@matthewhiggins.com
|
|
43
29
|
executables: []
|
|
@@ -45,8 +31,9 @@ extensions: []
|
|
|
45
31
|
extra_rdoc_files: []
|
|
46
32
|
files:
|
|
47
33
|
- MIT-LICENSE
|
|
48
|
-
- Rakefile
|
|
49
34
|
- README.md
|
|
35
|
+
- Rakefile
|
|
36
|
+
- lib/foreigner.rb
|
|
50
37
|
- lib/foreigner/adapter.rb
|
|
51
38
|
- lib/foreigner/connection_adapters/abstract/foreign_key_definition.rb
|
|
52
39
|
- lib/foreigner/connection_adapters/abstract/schema_definitions.rb
|
|
@@ -62,7 +49,6 @@ files:
|
|
|
62
49
|
- lib/foreigner/migration/command_recorder.rb
|
|
63
50
|
- lib/foreigner/railtie.rb
|
|
64
51
|
- lib/foreigner/schema_dumper.rb
|
|
65
|
-
- lib/foreigner.rb
|
|
66
52
|
- test/foreigner/adapter_test.rb
|
|
67
53
|
- test/foreigner/connection_adapters/abstract/schema_statements_test.rb
|
|
68
54
|
- test/foreigner/connection_adapters/abstract/table_definition_test.rb
|
|
@@ -82,17 +68,17 @@ require_paths:
|
|
|
82
68
|
- lib
|
|
83
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
70
|
requirements:
|
|
85
|
-
- -
|
|
71
|
+
- - ">="
|
|
86
72
|
- !ruby/object:Gem::Version
|
|
87
73
|
version: 1.9.2
|
|
88
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
75
|
requirements:
|
|
90
|
-
- -
|
|
76
|
+
- - ">="
|
|
91
77
|
- !ruby/object:Gem::Version
|
|
92
78
|
version: 1.3.5
|
|
93
79
|
requirements: []
|
|
94
80
|
rubyforge_project: foreigner
|
|
95
|
-
rubygems_version: 2.0
|
|
81
|
+
rubygems_version: 2.2.0
|
|
96
82
|
signing_key:
|
|
97
83
|
specification_version: 4
|
|
98
84
|
summary: Foreign Keys for Rails
|