broken_record 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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: {}
|