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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTEyNmRlZWM4NjUxZjdmNmE3ZWE0NjJlYzNmZDVjZDcyMTJkZGIwMw==
4
+ NmQyYTRiOTBhYjVhNTcyZTIzNTFhOWU3Y2JiNWY3NDFiYjk3ZTg5Ng==
5
5
  data.tar.gz: !binary |-
6
- NmYxZDNlZGI5NzJhZDRkODU1YmFkOTFlZWUyNTU0MGEyZDNmZTg4ZA==
6
+ MjNjMWEzNTgyNzNjMjRmNTQ4YmMyZTAyZTM1OTgwNjRiYWIzNGMwMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDAyNDkxNDc2MzEyY2I1MGY3NTQ2MzVkZGI5NmM1ZWViNzE1YTc0OGJkMDkz
10
- MjQxMWM3NmNkYjc0ZGYxZmJlN2NjMTZkNWY5MGJkZWVmYzJjY2Y1ODAyODQ4
11
- MzkxZjRmZTQ1YjA3YTIxMzlhOTM2NThmNTE3NDllNDlhMDczOGQ=
9
+ NzI0Mjg0ZmI4N2EyNWMwNmQ0ZGQ4YzM1ZTJlOTBkNGYwNDQyYWM3MTAxMWJl
10
+ N2EyNGE0ODBhZTJiMDg4YTY3ZjAzZGY2NzdlMzlkNzhmYzg1NTg4MWFjZjZm
11
+ NjgzZTBlZTMzN2ZjNWYxN2RkZmFmOTdhNjBlOWVjYWFiOGMwMmU=
12
12
  data.tar.gz: !binary |-
13
- MWU0ZWQxZWViZjM5ZWY2YzI4NmRjYWIwZmRiOWM4ZDEzZTE2MmJkYjYyYTc0
14
- NjA5NDg5MWJlNzQxN2NjNDc1OTVkMjUyNTM0YTBjZmZjN2MxZTc5ZDM5YjI2
15
- OTEyY2NiYzg2MzkyMDRmNjgyYzQzOWUxNDY0YjljNWZmNWNmMWM=
13
+ YTczYzAzODkwOWM0ZTlmYjE4NmVhYzRmMjc3Mjk5YThkN2VkYTE1OWM3Y2I1
14
+ YTAxYTEyMmExY2ExZGFjOTUwMjM3YWQ4MWRkOWIzNjUxNWE1ZWQ1NzQ4OGIw
15
+ MDMxNTcyODIyMWZjOWIxYzRmMWVmOWY5YjJiODQ0MzY2NjQ1YzA=
@@ -9,4 +9,8 @@
9
9
 
10
10
  ## v0.0.3
11
11
 
12
- * Allow setting a per-model default scope
12
+ * Allow setting a per-model default scope
13
+
14
+ ## v0.0.5
15
+
16
+ * Show per-model test duration in log output
@@ -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 = "broken_record"
7
+ spec.name = 'broken_record'
8
8
  spec.version = BrokenRecord::VERSION
9
- spec.authors = ["Nicholas Gervasi"]
10
- spec.email = ["nick@zenpayroll.com"]
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 = "MIT"
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 = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
22
 
23
- spec.add_runtime_dependency "rake"
24
- spec.add_runtime_dependency "parallel"
25
- spec.add_runtime_dependency "colorize"
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
@@ -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[:errors] }
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
- @errors = 0
38
- @stdout = ""
48
+ @header = ''
49
+ @errors = []
50
+
51
+ @stdout = ''
39
52
  end
40
53
 
41
- def log_error(message)
42
- @stdout << "[FAIL]\n".red if @errors == 0
43
- @stdout << "#{message.red}\n"
44
- @errors += 1
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 log_message(message)
48
- @stdout << "#{message}"
62
+ def log_error(message)
63
+ @errors << "#{message.red}\n"
49
64
  end
50
65
 
51
66
  def log_result
52
- @stdout << "[PASS]\n".green if @errors == 0
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, errors: @errors}
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
- logger = BrokenRecord::Logger.new
50
- logger.log_message "Validating model #{model}... ".ljust(70)
51
-
52
- begin
53
- if BrokenRecord::Config.default_scopes[model]
54
- model_scope = model.instance_exec &BrokenRecord::Config.default_scopes[model]
55
- else
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
- model_scope.find_each do |r|
60
- begin
61
- if !r.valid?
62
- message = " Invalid record in #{model} id=#{r.id}."
63
- r.errors.each { |attr,msg| message << "\n #{attr} - #{msg}" }
64
- logger.log_error message
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
@@ -1,3 +1,3 @@
1
1
  module BrokenRecord
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  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.3
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-02-26 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: {}