yeet_dba 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52cc31e276691be6f75f50eef374d4511c108fd5e4d9abcce296c36bf810e481
4
- data.tar.gz: 0c6fb6686fbe35055dc7be0f3bd2456988efe20acc7c8da404e6f5e594bee2da
3
+ metadata.gz: 29f529969da12bc9f86d807332f3989a6cf190462e37e95bbc4339d7b21cfd0f
4
+ data.tar.gz: a8377c2eb1f4d3fb5926e40e06aa89f97e639c07da5d0c751b29cddc364981f4
5
5
  SHA512:
6
- metadata.gz: 39709844b54331b0a73002c4ca7085fccc83d7cdfc97a54af40c7bf895df30890d65ee68473e64fea92e13bef56bb3ea872c64238e22497b453f622b0aad1847
7
- data.tar.gz: 00c8ec4a3d6182ce6fff3112ded9eba2b55bb9291ecf96b8258fa3e3d1341166468525d6b2327b3d9eb79e04034a5a3ea8b35f03c1bac1c893314d8cd72de359
6
+ metadata.gz: c5b1d4c28966966993cb7fc5a7bf76e4290937ea8fcc64cda38933d912a25f123f85628168373de325e20442b8a6b0e7e7ae3401e74e91b44af12c8851fb90a5
7
+ data.tar.gz: f04bfc0c9ec7c06f496da8f49e632fa73f8fa8bb9f4e31bd2af0b1177edb7043c234f01002b5cd3fc406a48e48d8e90aa84e1a62c32ab1cd0b024392b77b207d
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.0
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- # 1.0.1 (unreleased, master)
1
+ # 1.0.2 (unreleased, master)
2
+
3
+ ## Minor changes
4
+
5
+ Support Rails 7
6
+ Bump ruby versions
7
+ Bump bundler versions
8
+
9
+ # 1.0.1
2
10
 
3
11
  ## Minor changes
4
12
 
data/Gemfile.lock CHANGED
@@ -1,113 +1,115 @@
1
- PATH
2
- remote: .
3
- specs:
4
- yeet_dba (1.0.1)
5
- actionpack (>= 3.0, < 7.0)
6
- activerecord (>= 3.0, < 7.0)
7
- railties (>= 3.0, < 7.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actionpack (6.0.0)
13
- actionview (= 6.0.0)
14
- activesupport (= 6.0.0)
15
- rack (~> 2.0)
16
- rack-test (>= 0.6.3)
17
- rails-dom-testing (~> 2.0)
18
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
- actionview (6.0.0)
20
- activesupport (= 6.0.0)
21
- builder (~> 3.1)
22
- erubi (~> 1.4)
23
- rails-dom-testing (~> 2.0)
24
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
- activemodel (6.0.0)
26
- activesupport (= 6.0.0)
27
- activerecord (6.0.0)
28
- activemodel (= 6.0.0)
29
- activesupport (= 6.0.0)
30
- activesupport (6.0.0)
31
- concurrent-ruby (~> 1.0, >= 1.0.2)
32
- i18n (>= 0.7, < 2)
33
- minitest (~> 5.1)
34
- tzinfo (~> 1.1)
35
- zeitwerk (~> 2.1, >= 2.1.8)
36
- builder (3.2.3)
37
- concurrent-ruby (1.1.5)
38
- crass (1.0.4)
39
- diff-lcs (1.3)
40
- erubi (1.8.0)
41
- i18n (1.6.0)
42
- concurrent-ruby (~> 1.0)
43
- loofah (2.2.3)
44
- crass (~> 1.0.2)
45
- nokogiri (>= 1.5.9)
46
- method_source (0.9.2)
47
- mini_portile2 (2.4.0)
48
- minitest (5.11.3)
49
- nokogiri (1.10.4)
50
- mini_portile2 (~> 2.4.0)
51
- power_assert (1.1.5)
52
- rack (2.0.7)
53
- rack-test (1.1.0)
54
- rack (>= 1.0, < 3)
55
- rails-dom-testing (2.0.3)
56
- activesupport (>= 4.2.0)
57
- nokogiri (>= 1.6)
58
- rails-html-sanitizer (1.2.0)
59
- loofah (~> 2.2, >= 2.2.2)
60
- railties (6.0.0)
61
- actionpack (= 6.0.0)
62
- activesupport (= 6.0.0)
63
- method_source
64
- rake (>= 0.8.7)
65
- thor (>= 0.20.3, < 2.0)
66
- rake (10.5.0)
67
- rspec (3.8.0)
68
- rspec-core (~> 3.8.0)
69
- rspec-expectations (~> 3.8.0)
70
- rspec-mocks (~> 3.8.0)
71
- rspec-core (3.8.2)
72
- rspec-support (~> 3.8.0)
73
- rspec-expectations (3.8.4)
74
- diff-lcs (>= 1.2.0, < 2.0)
75
- rspec-support (~> 3.8.0)
76
- rspec-mocks (3.8.1)
77
- diff-lcs (>= 1.2.0, < 2.0)
78
- rspec-support (~> 3.8.0)
79
- rspec-rails (3.8.2)
80
- actionpack (>= 3.0)
81
- activesupport (>= 3.0)
82
- railties (>= 3.0)
83
- rspec-core (~> 3.8.0)
84
- rspec-expectations (~> 3.8.0)
85
- rspec-mocks (~> 3.8.0)
86
- rspec-support (~> 3.8.0)
87
- rspec-support (3.8.2)
88
- sqlite3 (1.4.1)
89
- test-unit (3.3.3)
90
- power_assert
91
- thor (0.20.3)
92
- thread_safe (0.3.6)
93
- tzinfo (1.2.5)
94
- thread_safe (~> 0.1)
95
- zeitwerk (2.1.10)
96
-
97
- PLATFORMS
98
- ruby
99
-
100
- DEPENDENCIES
101
- actionpack
102
- activerecord
103
- bundler (~> 1.17)
104
- railties
105
- rake (~> 10.0)
106
- rspec (~> 3.0)
107
- rspec-rails
108
- sqlite3
109
- test-unit
110
- yeet_dba!
111
-
112
- BUNDLED WITH
113
- 1.17.3
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ yeet_dba (1.0.2)
5
+ actionpack (>= 3.0, < 8.0)
6
+ activerecord (>= 3.0, < 8.0)
7
+ railties (>= 3.0, < 8.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ actionpack (6.0.0)
13
+ actionview (= 6.0.0)
14
+ activesupport (= 6.0.0)
15
+ rack (~> 2.0)
16
+ rack-test (>= 0.6.3)
17
+ rails-dom-testing (~> 2.0)
18
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
+ actionview (6.0.0)
20
+ activesupport (= 6.0.0)
21
+ builder (~> 3.1)
22
+ erubi (~> 1.4)
23
+ rails-dom-testing (~> 2.0)
24
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
+ activemodel (6.0.0)
26
+ activesupport (= 6.0.0)
27
+ activerecord (6.0.0)
28
+ activemodel (= 6.0.0)
29
+ activesupport (= 6.0.0)
30
+ activesupport (6.0.0)
31
+ concurrent-ruby (~> 1.0, >= 1.0.2)
32
+ i18n (>= 0.7, < 2)
33
+ minitest (~> 5.1)
34
+ tzinfo (~> 1.1)
35
+ zeitwerk (~> 2.1, >= 2.1.8)
36
+ builder (3.2.3)
37
+ concurrent-ruby (1.1.5)
38
+ crass (1.0.5)
39
+ diff-lcs (1.3)
40
+ erubi (1.8.0)
41
+ i18n (1.6.0)
42
+ concurrent-ruby (~> 1.0)
43
+ loofah (2.3.1)
44
+ crass (~> 1.0.2)
45
+ nokogiri (>= 1.5.9)
46
+ method_source (0.9.2)
47
+ mini_portile2 (2.6.1)
48
+ minitest (5.11.3)
49
+ nokogiri (1.12.5)
50
+ mini_portile2 (~> 2.6.1)
51
+ racc (~> 1.4)
52
+ power_assert (1.1.5)
53
+ racc (1.5.2)
54
+ rack (2.2.3)
55
+ rack-test (1.1.0)
56
+ rack (>= 1.0, < 3)
57
+ rails-dom-testing (2.0.3)
58
+ activesupport (>= 4.2.0)
59
+ nokogiri (>= 1.6)
60
+ rails-html-sanitizer (1.2.0)
61
+ loofah (~> 2.2, >= 2.2.2)
62
+ railties (6.0.0)
63
+ actionpack (= 6.0.0)
64
+ activesupport (= 6.0.0)
65
+ method_source
66
+ rake (>= 0.8.7)
67
+ thor (>= 0.20.3, < 2.0)
68
+ rake (13.0.1)
69
+ rspec (3.8.0)
70
+ rspec-core (~> 3.8.0)
71
+ rspec-expectations (~> 3.8.0)
72
+ rspec-mocks (~> 3.8.0)
73
+ rspec-core (3.8.2)
74
+ rspec-support (~> 3.8.0)
75
+ rspec-expectations (3.8.4)
76
+ diff-lcs (>= 1.2.0, < 2.0)
77
+ rspec-support (~> 3.8.0)
78
+ rspec-mocks (3.8.1)
79
+ diff-lcs (>= 1.2.0, < 2.0)
80
+ rspec-support (~> 3.8.0)
81
+ rspec-rails (3.8.2)
82
+ actionpack (>= 3.0)
83
+ activesupport (>= 3.0)
84
+ railties (>= 3.0)
85
+ rspec-core (~> 3.8.0)
86
+ rspec-expectations (~> 3.8.0)
87
+ rspec-mocks (~> 3.8.0)
88
+ rspec-support (~> 3.8.0)
89
+ rspec-support (3.8.2)
90
+ sqlite3 (1.4.1)
91
+ test-unit (3.3.3)
92
+ power_assert
93
+ thor (0.20.3)
94
+ thread_safe (0.3.6)
95
+ tzinfo (1.2.5)
96
+ thread_safe (~> 0.1)
97
+ zeitwerk (2.1.10)
98
+
99
+ PLATFORMS
100
+ ruby
101
+
102
+ DEPENDENCIES
103
+ actionpack
104
+ activerecord
105
+ bundler (~> 2.1)
106
+ railties
107
+ rake (~> 13.0)
108
+ rspec (~> 3.0)
109
+ rspec-rails
110
+ sqlite3
111
+ test-unit
112
+ yeet_dba!
113
+
114
+ BUNDLED WITH
115
+ 2.1.4
@@ -17,7 +17,11 @@ module YeetDba
17
17
  end
18
18
 
19
19
  def association_table_name
20
- association_klass&.table_name || tables.detect { |table| table == guessed_table_name }
20
+ if association_klass&.ancestors&.include?(ActiveRecord::Base)
21
+ association_klass&.table_name
22
+ else
23
+ tables.detect { |table| table == guessed_table_name }
24
+ end
21
25
  end
22
26
 
23
27
  def association_name
@@ -1,35 +1,39 @@
1
- module YeetDba
2
- class VerifyData
3
- attr_accessor :column
4
-
5
- def initialize(column:)
6
- @column = column
7
- end
8
-
9
- def orphaned_rows?
10
- orphaned_rows.first
11
- end
12
-
13
- def orphaned_rows_count
14
- orphaned_rows.count
15
- end
16
-
17
- def query
18
- orphaned_rows.to_sql
19
- end
20
-
21
- def orphaned_rows
22
- association = column.association
23
-
24
- column_name = column.db_column.name
25
- table_name = column.table_name
26
- association_table = column.association_table_name
27
- model = column.model
28
-
29
- # Check to see there could be rows with bad data
30
- model.joins("left join #{association_table} as association_table on association_table.id = #{table_name}.#{column_name}")
31
- .where.not(column_name => nil)
32
- .where('association_table.id is null')
33
- end
34
- end
35
- end
1
+ module YeetDba
2
+ class VerifyData
3
+ attr_accessor :column
4
+
5
+ def initialize(column:)
6
+ @column = column
7
+ end
8
+
9
+ def orphaned_rows?
10
+ orphaned_rows.first
11
+ end
12
+
13
+ def orphaned_rows_count
14
+ orphaned_rows.count
15
+ end
16
+
17
+ def query
18
+ orphaned_rows.to_sql
19
+ end
20
+
21
+ def orphaned_rows
22
+ association = column.association
23
+
24
+ column_name = column.db_column.name
25
+ table_name = column.table_name
26
+ association_table = column.association_table_name
27
+ model = column.model
28
+
29
+ # Check to see there could be rows with bad data
30
+ if model
31
+ model.joins("left join #{association_table} as association_table on association_table.id = #{table_name}.#{column_name}")
32
+ .where.not(column_name => nil)
33
+ .where('association_table.id is null')
34
+ else
35
+ []
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module YeetDba
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
data/yeet_dba.gemspec CHANGED
@@ -1,45 +1,45 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'yeet_dba/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'yeet_dba'
7
- spec.version = YeetDba::VERSION
8
- spec.platform = Gem::Platform::RUBY
9
- spec.authors = ['Kevin Coleman']
10
- spec.email = ['kevin.coleman@sparkstart.io']
11
-
12
- spec.summary = 'Generates foreign key constraint migrations for rails databases'
13
- spec.description = "This scan every ActiveRecord model looking for relationships ('has_many', 'belongs_to', etc.) and adds foreign key constraints."
14
- spec.homepage = 'http://rubygems.org/gems/yeet_dba'
15
- spec.license = 'MIT'
16
-
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- if spec.respond_to?(:metadata)
20
- spec.metadata['homepage_uri'] = spec.homepage
21
- spec.metadata['source_code_uri'] = 'https://github.com/kevincolemaninc/yeet_dba'
22
- spec.metadata['changelog_uri'] = 'https://github.com/kevincolemaninc/yeet_dba/master/CHANGELOG.md'
23
- else
24
- raise 'RubyGems 2.0 or newer is required to protect against ' \
25
- 'public gem pushes.'
26
- end
27
-
28
- # Specify which files should be added to the gem when it is released.
29
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
- end
33
- spec.bindir = 'exe'
34
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
- spec.require_paths = ['lib']
36
-
37
- spec.add_development_dependency 'bundler', '~> 1.17'
38
- spec.add_development_dependency 'rake', '~> 10.0'
39
- spec.add_development_dependency 'rspec', '~> 3.0'
40
-
41
- spec.required_ruby_version = '>= 2.4.0'
42
- spec.add_dependency 'actionpack', '>= 3.0', '< 7.0'
43
- spec.add_dependency 'activerecord', '>= 3.0', '< 7.0'
44
- spec.add_dependency 'railties', '>= 3.0', '< 7.0'
45
- end
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'yeet_dba/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'yeet_dba'
7
+ spec.version = YeetDba::VERSION
8
+ spec.platform = Gem::Platform::RUBY
9
+ spec.authors = ['Kevin Coleman']
10
+ spec.email = ['kevin.coleman@sparkstart.io']
11
+
12
+ spec.summary = 'Generates foreign key constraint migrations for rails databases'
13
+ spec.description = "This scan every ActiveRecord model looking for relationships ('has_many', 'belongs_to', etc.) and adds foreign key constraints."
14
+ spec.homepage = 'http://rubygems.org/gems/yeet_dba'
15
+ spec.license = 'MIT'
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['homepage_uri'] = spec.homepage
21
+ spec.metadata['source_code_uri'] = 'https://github.com/kevincolemaninc/yeet_dba'
22
+ spec.metadata['changelog_uri'] = 'https://github.com/kevincolemaninc/yeet_dba/master/CHANGELOG.md'
23
+ else
24
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
25
+ 'public gem pushes.'
26
+ end
27
+
28
+ # Specify which files should be added to the gem when it is released.
29
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
+ end
33
+ spec.bindir = 'exe'
34
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
+ spec.require_paths = ['lib']
36
+
37
+ spec.add_development_dependency 'bundler', '~> 2.1'
38
+ spec.add_development_dependency 'rake', '~> 13.0'
39
+ spec.add_development_dependency 'rspec', '~> 3.0'
40
+
41
+ spec.required_ruby_version = '>= 2.4.0'
42
+ spec.add_dependency 'actionpack', '>= 3.0', '< 8.0'
43
+ spec.add_dependency 'activerecord', '>= 3.0', '< 8.0'
44
+ spec.add_dependency 'railties', '>= 3.0', '< 8.0'
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yeet_dba
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Coleman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-21 00:00:00.000000000 Z
11
+ date: 2023-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: '3.0'
62
62
  - - "<"
63
63
  - !ruby/object:Gem::Version
64
- version: '7.0'
64
+ version: '8.0'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +71,7 @@ dependencies:
71
71
  version: '3.0'
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: '7.0'
74
+ version: '8.0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: activerecord
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ dependencies:
81
81
  version: '3.0'
82
82
  - - "<"
83
83
  - !ruby/object:Gem::Version
84
- version: '7.0'
84
+ version: '8.0'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
@@ -91,7 +91,7 @@ dependencies:
91
91
  version: '3.0'
92
92
  - - "<"
93
93
  - !ruby/object:Gem::Version
94
- version: '7.0'
94
+ version: '8.0'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: railties
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +101,7 @@ dependencies:
101
101
  version: '3.0'
102
102
  - - "<"
103
103
  - !ruby/object:Gem::Version
104
- version: '7.0'
104
+ version: '8.0'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,7 +111,7 @@ dependencies:
111
111
  version: '3.0'
112
112
  - - "<"
113
113
  - !ruby/object:Gem::Version
114
- version: '7.0'
114
+ version: '8.0'
115
115
  description: This scan every ActiveRecord model looking for relationships ('has_many',
116
116
  'belongs_to', etc.) and adds foreign key constraints.
117
117
  email:
@@ -124,6 +124,7 @@ files:
124
124
  - ".gitignore"
125
125
  - ".rspec"
126
126
  - ".rubocop"
127
+ - ".ruby-version"
127
128
  - ".travis.yml"
128
129
  - ".yeet_dba.example.yml"
129
130
  - CHANGELOG.md
@@ -160,7 +161,7 @@ metadata:
160
161
  homepage_uri: http://rubygems.org/gems/yeet_dba
161
162
  source_code_uri: https://github.com/kevincolemaninc/yeet_dba
162
163
  changelog_uri: https://github.com/kevincolemaninc/yeet_dba/master/CHANGELOG.md
163
- post_install_message:
164
+ post_install_message:
164
165
  rdoc_options: []
165
166
  require_paths:
166
167
  - lib
@@ -175,8 +176,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
176
  - !ruby/object:Gem::Version
176
177
  version: '0'
177
178
  requirements: []
178
- rubygems_version: 3.0.3
179
- signing_key:
179
+ rubygems_version: 3.4.1
180
+ signing_key:
180
181
  specification_version: 4
181
182
  summary: Generates foreign key constraint migrations for rails databases
182
183
  test_files: []