pronto-rails_migrations 0.10.0 → 0.10.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/.ruby-version +1 -0
- data/lib/pronto/rails_migrations.rb +54 -13
- data/pronto-rails_migrations.gemspec +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8759567be612ea98f5a55432236144a570fb0d577a94669a97544b214e21cd56
|
4
|
+
data.tar.gz: 70de473bffef3c43636888990c98c4d7089d09a7b7afc88dc1ecb97ffda11a39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b8298cff6bffcbe03b1d9dbe07e7927bca866dbfebb879a793da4c141ebf04ace7d11b6a5da506d2747368292de7c64a42cb81305f5199feb73832d756f1f25
|
7
|
+
data.tar.gz: 80a5db5dd0a0f7f6abee5724902142179b5104ff49c13eaf4c7ab8ce02e13e63c0dd6499ff597ec9aa316af467aa615803eb718df8a51f1529029b7201a533ca
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.3
|
@@ -1,20 +1,19 @@
|
|
1
1
|
module Pronto
|
2
2
|
class RailsMigrations < Runner
|
3
3
|
def run
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
else
|
16
|
-
[]
|
4
|
+
return [] unless migration_patches?
|
5
|
+
|
6
|
+
messages = []
|
7
|
+
|
8
|
+
if other_patches?
|
9
|
+
patch = migration_patches.first
|
10
|
+
messages << message(
|
11
|
+
patch.delta.new_file[:path],
|
12
|
+
'Run migrations in a separate PR from application code changes.'
|
13
|
+
)
|
17
14
|
end
|
15
|
+
|
16
|
+
messages + bad_structure_sql_messages
|
18
17
|
end
|
19
18
|
|
20
19
|
private
|
@@ -31,6 +30,48 @@ module Pronto
|
|
31
30
|
@patches.reject { |patch| migration_patch?(patch) }.any?
|
32
31
|
end
|
33
32
|
|
33
|
+
def bad_structure_sql_messages
|
34
|
+
patch = structure_sql_patches.first
|
35
|
+
return false unless patch
|
36
|
+
|
37
|
+
path = patch.delta.new_file[:path]
|
38
|
+
structure_sql = File.read(patch.new_file_full_path)
|
39
|
+
inserts = structure_sql.split("\n").grep(/\('\d+'\)/)
|
40
|
+
unordered_inserts = (inserts.sort != inserts)
|
41
|
+
|
42
|
+
*all_but_tail, tail = inserts
|
43
|
+
bad_semicolons = all_but_tail.any? { |line| line.end_with?(';') } || !tail.end_with?(';')
|
44
|
+
|
45
|
+
bad_ending = structure_sql[-4, 4] !~ /[^\n]\n\n\n/
|
46
|
+
|
47
|
+
messages = []
|
48
|
+
|
49
|
+
if unordered_inserts
|
50
|
+
messages << message(
|
51
|
+
path,
|
52
|
+
'`schema_migrations` insert values are not ordered by timestamp.'
|
53
|
+
)
|
54
|
+
end
|
55
|
+
if bad_semicolons
|
56
|
+
messages << message(
|
57
|
+
path,
|
58
|
+
'`schema_migrations` inserts must end with comma (`,`), ' \
|
59
|
+
'last insert must end with semicolon (`;`).'
|
60
|
+
)
|
61
|
+
end
|
62
|
+
messages << message(path, '`db/structure.sql` must end with 2 empty lines.') if bad_ending
|
63
|
+
|
64
|
+
messages
|
65
|
+
end
|
66
|
+
|
67
|
+
def message(path, text)
|
68
|
+
Message.new(path, nil, :warning, text, nil, self.class)
|
69
|
+
end
|
70
|
+
|
71
|
+
def structure_sql_patches
|
72
|
+
@patches.select { |patch| patch.new_file_full_path.to_s =~ /structure\.sql/ }
|
73
|
+
end
|
74
|
+
|
34
75
|
def migration_patch?(patch)
|
35
76
|
path = patch.new_file_full_path.to_s
|
36
77
|
/db.(schema.rb|structure.sql|migrate)/ =~ path
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "pronto-rails_migrations"
|
7
|
-
spec.version = '0.10.
|
7
|
+
spec.version = '0.10.1'
|
8
8
|
spec.authors = ["Tomas Varneckas"]
|
9
9
|
spec.email = ["t.varneckas@gmail.com"]
|
10
10
|
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency('pronto', '
|
23
|
+
spec.add_dependency('pronto', '>= 0.10.0')
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", ">= 1.15"
|
26
26
|
spec.add_development_dependency "rake", "~> 12.0"
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pronto-rails_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Varneckas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pronto
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.10.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: 0.10.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -61,6 +61,7 @@ extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
63
|
- ".gitignore"
|
64
|
+
- ".ruby-version"
|
64
65
|
- Gemfile
|
65
66
|
- LICENSE.txt
|
66
67
|
- README.md
|