broken_record 0.0.3 → 0.0.5
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 +8 -8
- data/CHANGELOG.md +5 -1
- data/broken_record.gemspec +10 -10
- data/lib/broken_record/logger.rb +37 -11
- data/lib/broken_record/scanner.rb +18 -22
- data/lib/broken_record/version.rb +1 -1
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmQyYTRiOTBhYjVhNTcyZTIzNTFhOWU3Y2JiNWY3NDFiYjk3ZTg5Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjNjMWEzNTgyNzNjMjRmNTQ4YmMyZTAyZTM1OTgwNjRiYWIzNGMwMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzI0Mjg0ZmI4N2EyNWMwNmQ0ZGQ4YzM1ZTJlOTBkNGYwNDQyYWM3MTAxMWJl
|
10
|
+
N2EyNGE0ODBhZTJiMDg4YTY3ZjAzZGY2NzdlMzlkNzhmYzg1NTg4MWFjZjZm
|
11
|
+
NjgzZTBlZTMzN2ZjNWYxN2RkZmFmOTdhNjBlOWVjYWFiOGMwMmU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTczYzAzODkwOWM0ZTlmYjE4NmVhYzRmMjc3Mjk5YThkN2VkYTE1OWM3Y2I1
|
14
|
+
YTAxYTEyMmExY2ExZGFjOTUwMjM3YWQ4MWRkOWIzNjUxNWE1ZWQ1NzQ4OGIw
|
15
|
+
MDMxNTcyODIyMWZjOWIxYzRmMWVmOWY5YjJiODQ0MzY2NjQ1YzA=
|
data/CHANGELOG.md
CHANGED
data/broken_record.gemspec
CHANGED
@@ -4,23 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'broken_record/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'broken_record'
|
8
8
|
spec.version = BrokenRecord::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Nicholas Gervasi']
|
10
|
+
spec.email = ['nick@zenpayroll.com']
|
11
11
|
spec.description = %q{Detects ActiveRecord models that are not valid.}
|
12
12
|
spec.summary = %q{Provides a rake task for scanning your ActiveRecord models and detecting validation errors.}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/nickgervasi/broken_record'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
22
|
|
23
|
-
spec.add_runtime_dependency
|
24
|
-
spec.add_runtime_dependency
|
25
|
-
spec.add_runtime_dependency
|
23
|
+
spec.add_runtime_dependency 'rake', '~> 10'
|
24
|
+
spec.add_runtime_dependency 'parallel', '~> 0'
|
25
|
+
spec.add_runtime_dependency 'colorize', '0.5.8'
|
26
26
|
end
|
data/lib/broken_record/logger.rb
CHANGED
@@ -16,7 +16,7 @@ module BrokenRecord
|
|
16
16
|
|
17
17
|
def self.report_results(test_results)
|
18
18
|
total_errors = 0
|
19
|
-
test_results.each { |result| total_errors += result[:
|
19
|
+
test_results.each { |result| total_errors += result[:error_count] }
|
20
20
|
if total_errors == 0
|
21
21
|
puts "\nAll models validated successfully.".green
|
22
22
|
else
|
@@ -31,29 +31,55 @@ module BrokenRecord
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
def self.log(model, &block)
|
35
|
+
logger = new
|
36
|
+
logger.start_log
|
37
|
+
logger.log_header "Validating model #{model}... ".ljust(70)
|
38
|
+
|
39
|
+
yield(logger)
|
40
|
+
|
41
|
+
logger.log_result
|
42
|
+
logger.result
|
43
|
+
end
|
44
|
+
|
34
45
|
# Instance Methods
|
35
46
|
|
36
47
|
def initialize
|
37
|
-
@
|
38
|
-
@
|
48
|
+
@header = ''
|
49
|
+
@errors = []
|
50
|
+
|
51
|
+
@stdout = ''
|
39
52
|
end
|
40
53
|
|
41
|
-
def
|
42
|
-
@
|
43
|
-
|
44
|
-
|
54
|
+
def log_header(header_message)
|
55
|
+
@header = header_message
|
56
|
+
end
|
57
|
+
|
58
|
+
def start_log
|
59
|
+
@start_time = Time.now
|
45
60
|
end
|
46
61
|
|
47
|
-
def
|
48
|
-
@
|
62
|
+
def log_error(message)
|
63
|
+
@errors << "#{message.red}\n"
|
49
64
|
end
|
50
65
|
|
51
66
|
def log_result
|
52
|
-
@stdout <<
|
67
|
+
@stdout << @header
|
68
|
+
|
69
|
+
if @errors.empty?
|
70
|
+
@stdout << '[PASS]'.green
|
71
|
+
else
|
72
|
+
@stdout << '[FAIL]'.red
|
73
|
+
end
|
74
|
+
|
75
|
+
duration = (Time.now - @start_time).round(3)
|
76
|
+
@stdout << " (#{duration}s)\n"
|
77
|
+
|
78
|
+
@stdout << @errors.join
|
53
79
|
end
|
54
80
|
|
55
81
|
def result
|
56
|
-
{ stdout: @stdout,
|
82
|
+
{ stdout: @stdout, error_count: @errors.count}
|
57
83
|
end
|
58
84
|
end
|
59
85
|
end
|
@@ -46,33 +46,29 @@ module BrokenRecord
|
|
46
46
|
def validate_model(model)
|
47
47
|
ActiveRecord::Base.connection.reconnect!
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
model_scope = model.unscoped
|
57
|
-
end
|
49
|
+
BrokenRecord::Logger.log(model) do |logger|
|
50
|
+
begin
|
51
|
+
if BrokenRecord::Config.default_scopes[model]
|
52
|
+
model_scope = model.instance_exec &BrokenRecord::Config.default_scopes[model]
|
53
|
+
else
|
54
|
+
model_scope = model.unscoped
|
55
|
+
end
|
58
56
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
model_scope.find_each do |r|
|
58
|
+
begin
|
59
|
+
if !r.valid?
|
60
|
+
message = " Invalid record in #{model} id=#{r.id}."
|
61
|
+
r.errors.each { |attr,msg| message << "\n #{attr} - #{msg}" }
|
62
|
+
logger.log_error message
|
63
|
+
end
|
64
|
+
rescue Exception => msg
|
65
|
+
logger.log_error " Exception for record in #{model} id=#{r.id} - #{msg}."
|
65
66
|
end
|
66
|
-
rescue Exception => msg
|
67
|
-
logger.log_error " Exception for record in #{model} id=#{r.id} - #{msg}."
|
68
67
|
end
|
68
|
+
rescue Exception => msg
|
69
|
+
logger.log_error " Error querying model #{model} - #{msg}."
|
69
70
|
end
|
70
|
-
rescue Exception => msg
|
71
|
-
logger.log_error " Error querying model #{model} - #{msg}."
|
72
71
|
end
|
73
|
-
|
74
|
-
logger.log_result
|
75
|
-
logger.result
|
76
72
|
end
|
77
73
|
end
|
78
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: broken_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Gervasi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,44 +28,44 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '10'
|
34
34
|
type: :runtime
|
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: '
|
40
|
+
version: '10'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: parallel
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: colorize
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.5.8
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.5.8
|
69
69
|
description: Detects ActiveRecord models that are not valid.
|
70
70
|
email:
|
71
71
|
- nick@zenpayroll.com
|
@@ -87,7 +87,7 @@ files:
|
|
87
87
|
- lib/broken_record/scanner.rb
|
88
88
|
- lib/broken_record/tasks.rb
|
89
89
|
- lib/broken_record/version.rb
|
90
|
-
homepage:
|
90
|
+
homepage: https://github.com/nickgervasi/broken_record
|
91
91
|
licenses:
|
92
92
|
- MIT
|
93
93
|
metadata: {}
|