pdd 0.15.4 → 0.16

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
  SHA1:
3
- metadata.gz: 041f30911ddb1eb7abad2b403562d5aa05b77262
4
- data.tar.gz: 826360d8e9696c72d30b5895becb9919aeec1a9f
3
+ metadata.gz: 1ccf65c43c8c73f60aacdb97b18fb0e1aa1d8a95
4
+ data.tar.gz: 0816acf8952b943efe05cb6f7d0bde9e80240b06
5
5
  SHA512:
6
- metadata.gz: 6a16c70d4408763eb0f7883fd191c1660868a90874be1b8012b60bf68ad97ee9b0aaf0708e991ab39f6caa06f2221171e42af57ce409883a570e551b13ff7bc1
7
- data.tar.gz: db964f42e3f8e699f7799ed877fd26e36807be06d5271b8fe9575af37e2480aae785c1e49897477d2e3d32c72df11fc865223e0337b18d3c56f0d9acc2f8f576
6
+ metadata.gz: feb1ce6850ca49b79f1f1c24450c7a3a10e457d9d61f59f7fb50a216be0f7997f22d6d293c50792267d5adb56354d9353c28d35abfc883db689f0b4bf9242e79
7
+ data.tar.gz: 164f86ac91279090b113b712d773bfc721b5b6f2f6b263b2ba4160301c8c564f3847a1422feb4a2f2e7e8df2fe7a3a77d2629714f91f198a19e23fa4ee4a60a7
@@ -2,3 +2,5 @@ MethodLength:
2
2
  Max: 30
3
3
  Style/ClassLength:
4
4
  Max: 150
5
+ Metrics/AbcSize:
6
+ Max: 37
@@ -1,6 +1,6 @@
1
1
  assets:
2
- rubygems.yml: yegor256/home#assets/rubygems.yml
3
- s3cfg: yegor256/home#assets/s3cfg
2
+ rubygems.yml: teamed/home#assets/rubygems.yml
3
+ s3cfg: teamed/home#assets/s3cfg
4
4
  install: |
5
5
  sudo apt-get update
6
6
  sudo apt-get install -y --fix-missing libmagic1 libmagic-dev
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
3
+ - 2.2.2
4
4
  cache: bundler
5
5
  branches:
6
6
  only:
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  [![Made By Teamed.io](http://img.teamed.io/btn.svg)](http://www.teamed.io)
2
2
  [![DevOps By Rultor.com](http://www.rultor.com/b/teamed/pdd)](http://www.rultor.com/p/teamed/pdd)
3
+ [![We recommend RubyMine](http://img.teamed.io/rubymine-recommend.svg)](https://www.jetbrains.com/ruby/)
3
4
 
4
5
  [![Build Status](https://travis-ci.org/teamed/pdd.svg)](https://travis-ci.org/teamed/pdd)
5
6
  [![Build status](https://ci.appveyor.com/api/projects/status/pojnoa1bp7t2ecbr?svg=true)](https://ci.appveyor.com/project/yegor256/pdd)
@@ -8,13 +9,36 @@
8
9
  [![Code Climate](http://img.shields.io/codeclimate/github/teamed/pdd.svg)](https://codeclimate.com/github/teamed/pdd)
9
10
  [![Coverage Status](https://img.shields.io/coveralls/teamed/pdd.svg)](https://coveralls.io/r/teamed/pdd)
10
11
 
11
- Install it first:
12
+ ## What This is for?
13
+
14
+ Read this article about
15
+ [Puzzle Driven Development](http://www.yegor256.com/2009/03/04/pdd.html).
16
+ Check also patent application [US 12/840,306](http://www.google.com/patents/US20120023476)
17
+
18
+ ## How to Install?
19
+
20
+ Install it first (Debian Linux):
12
21
 
13
22
  ```bash
14
- $ apt-get install -y libmagic1 libmagic-dev ruby-dev
23
+ $ apt-get install -y libmagic1 libmagic-dev zlib1g-dev ruby-dev
24
+ $ gem install pdd
25
+ ```
26
+
27
+ On RedHat:
28
+
29
+ ```bash
30
+ $ yum install -y libmagic1 libmagic-dev zlib1g-dev ruby-dev
31
+ $ gem install pdd
32
+ ```
33
+
34
+ On OSX and Windows, just that:
35
+
36
+ ```
15
37
  $ gem install pdd
16
38
  ```
17
39
 
40
+ ## How to Run?
41
+
18
42
  Run it locally and read its output:
19
43
 
20
44
  ```bash
@@ -43,11 +67,15 @@ Possible formats of puzzle markers:
43
67
  #678:40m/DEV
44
68
  ```
45
69
 
46
- Read this article about
47
- [Puzzle Driven Development](http://www.yegor256.com/2009/03/04/pdd.html).
48
- Check also patent application [US 12/840,306](http://www.google.com/patents/US20120023476)
70
+ You can exclude certain files from the search, for example:
71
+
72
+ ```bash
73
+ pdd --exclude=src/**/*.java --exclude=target/**/*
74
+ pdd --exclude=src/**/*.java # exclude .java files in src/
75
+ pdd --exclude=src/**/* # exclude all files in src/
76
+ ```
49
77
 
50
- ## Rules
78
+ ## How to Configure Rules
51
79
 
52
80
  You can specify post-parsing rules for your puzzles, in command line,
53
81
  for example:
@@ -76,7 +104,5 @@ Here is a list of rules available now:
76
104
  * `max-duplicates:1` blocks more than one duplicate of any puzzle
77
105
  (this rule is used by default).
78
106
 
79
- ## .pdd
80
-
81
107
  You can put all command line options into `.pdd` file. The options from the
82
108
  file will be used first. Command line options may be added on top of them.
data/bin/pdd CHANGED
@@ -30,8 +30,8 @@ require 'pdd/version'
30
30
  require 'nokogiri'
31
31
 
32
32
  args = []
33
- args.push(*File.read('.pdd').split(/\s+/).map(&:strip)) if File.exist?('.pdd')
34
- args.push(*ARGV)
33
+ args += File.read('.pdd').split(/\s+/).map(&:strip) if File.exist?('.pdd')
34
+ args += ARGV
35
35
 
36
36
  opts = Slop.parse(args, strict: true, help: true) do
37
37
  banner "Usage (#{PDD::VERSION}): pdd [options]"
@@ -72,7 +72,7 @@ opts = Slop.parse(args, strict: true, help: true) do
72
72
  )
73
73
  end
74
74
 
75
- fail '-f is mandatory when using -v' if opts.verbose? && !opts.file?
75
+ raise '-f is mandatory when using -v' if opts.verbose? && !opts.file?
76
76
 
77
77
  if opts.help?
78
78
  puts opts
@@ -95,8 +95,8 @@ if opts[:format]
95
95
  'assets', 'puzzles.xsl'
96
96
  )
97
97
  output = Nokogiri::XSLT(File.read(xslt)).transform(Nokogiri::XML(output))
98
- else
99
- fail 'invalid format, use html or xml' if opts[:format] != 'xml'
98
+ elsif opts[:format] != 'xml'
99
+ raise 'invalid format, use html or xml'
100
100
  end
101
101
  end
102
102
  file << output
@@ -46,7 +46,7 @@ end
46
46
  Given(/^I have a "([^"]*)" file with content:$/) do |file, text|
47
47
  FileUtils.mkdir_p(File.dirname(file)) unless File.exist?(file)
48
48
  File.open(file, 'w') do |f|
49
- f.write(text.gsub(/\\xFF/, "\xFF"))
49
+ f.write(text.gsub(/\\xFF/, 0xFF.chr))
50
50
  end
51
51
  end
52
52
 
@@ -55,7 +55,7 @@ When(/^I run pdd$/) do
55
55
  end
56
56
 
57
57
  Then(/^XML matches "([^"]+)"$/) do |xpath|
58
- fail "XML doesn't match \"#{xpath}\":\n#{@xml}" if @xml.xpath(xpath).empty?
58
+ raise "XML doesn't match \"#{xpath}\":\n#{@xml}" if @xml.xpath(xpath).empty?
59
59
  end
60
60
 
61
61
  When(/^I run pdd it fails with "([^"]*)"$/) do |txt|
@@ -67,10 +67,10 @@ When(/^I run pdd it fails with "([^"]*)"$/) do |txt|
67
67
  raise "PDD failed but exception doesn't contain \"#{txt}\": #{ex.message}"
68
68
  end
69
69
  end
70
- fail "PDD didn't fail" if passed
70
+ raise "PDD didn't fail" if passed
71
71
  end
72
72
 
73
- When(/^I run bin\/pdd with "([^"]*)"$/) do |arg|
73
+ When(%r{^I run bin/pdd with "([^"]*)"$}) do |arg|
74
74
  home = File.join(File.dirname(__FILE__), '../..')
75
75
  @stdout = `ruby -I#{home}/lib #{home}/bin/pdd #{arg}`
76
76
  @exitstatus = $CHILD_STATUS.exitstatus
@@ -78,29 +78,29 @@ end
78
78
 
79
79
  Then(/^Stdout contains "([^"]*)"$/) do |txt|
80
80
  unless @stdout.include?(txt)
81
- fail "STDOUT doesn't contain '#{txt}':\n#{@stdout}"
81
+ raise "STDOUT doesn't contain '#{txt}':\n#{@stdout}"
82
82
  end
83
83
  end
84
84
 
85
85
  Then(/^Stdout is empty$/) do
86
- fail "STDOUT is not empty:\n#{@stdout}" unless @stdout == ''
86
+ raise "STDOUT is not empty:\n#{@stdout}" unless @stdout == ''
87
87
  end
88
88
 
89
89
  Then(/^XML file "([^"]+)" matches "([^"]+)"$/) do |file, xpath|
90
- fail "File #{file} doesn't exit" unless File.exist?(file)
90
+ raise "File #{file} doesn't exit" unless File.exist?(file)
91
91
  xml = Nokogiri::XML.parse(File.read(file))
92
92
  xml.remove_namespaces!
93
93
  if xml.xpath(xpath).empty?
94
- fail "XML file #{file} doesn't match \"#{xpath}\":\n#{xml}"
94
+ raise "XML file #{file} doesn't match \"#{xpath}\":\n#{xml}"
95
95
  end
96
96
  end
97
97
 
98
98
  Then(/^Exit code is zero$/) do
99
- fail "Non-zero exit code #{@exitstatus}" unless @exitstatus == 0
99
+ raise "Non-zero exit code #{@exitstatus}" unless @exitstatus == 0
100
100
  end
101
101
 
102
102
  Then(/^Exit code is not zero$/) do
103
- fail 'Zero exit code' if @exitstatus == 0
103
+ raise 'Zero exit code' if @exitstatus == 0
104
104
  end
105
105
 
106
106
  When(/^I run bash with$/) do |text|
data/lib/pdd.rb CHANGED
@@ -50,7 +50,7 @@ module PDD
50
50
  'min-words' => PDD::Rule::Text::MinWords,
51
51
  'max-duplicates' => PDD::Rule::MaxDuplicates,
52
52
  'available-roles' => PDD::Rule::Roles::Available
53
- }
53
+ }.freeze
54
54
 
55
55
  # Get logger.
56
56
  def self.log
@@ -141,13 +141,13 @@ module PDD
141
141
  (@opts[:rule] || []).push('max-duplicates:1').map do |r|
142
142
  name, value = r.split(':')
143
143
  rule = RULES[name]
144
- fail "rule '#{name}' doesn't exist" if rule.nil?
144
+ raise "rule '#{name}' doesn't exist" if rule.nil?
145
145
  rule.new(doc, value).errors.each do |e|
146
146
  PDD.log.error e
147
147
  total += 1
148
148
  end
149
149
  end
150
- fail PDD::Error, "#{total} errors, see log above" unless total == 0
150
+ raise PDD::Error, "#{total} errors, see log above" unless total == 0
151
151
  xml
152
152
  end
153
153
 
@@ -158,7 +158,7 @@ module PDD
158
158
  errors = xsd.validate(Nokogiri::XML(xml)).map(&:message)
159
159
  errors.each { |e| PDD.log.error e }
160
160
  PDD.log.error(xml) unless errors.empty?
161
- fail SchemaError, errors.join('; ') unless errors.empty?
161
+ raise SchemaError, errors.join('; ') unless errors.empty?
162
162
  xml
163
163
  end
164
164
  end
@@ -33,15 +33,16 @@ module PDD
33
33
  end
34
34
 
35
35
  def errors
36
- @xml.xpath('//puzzle')
36
+ @xml
37
+ .xpath('//puzzle')
37
38
  .group_by { |p| p.xpath('body/text()').to_s }
38
39
  .map do |_, puzzles|
39
40
  next nil if puzzles.count <= @max
40
41
  "there are #{puzzles.count} duplicate(s) of the same puzzle: " +
41
- puzzles.map do |p|
42
- "#{p.xpath('file/text()')}:#{p.xpath('lines/text()')}"
43
- end.join(', ') +
44
- ", while maximum #{@max} duplicate is allowed"
42
+ puzzles.map do |p|
43
+ "#{p.xpath('file/text()')}:#{p.xpath('lines/text()')}"
44
+ end.join(', ') +
45
+ ", while maximum #{@max} duplicate is allowed"
45
46
  end.compact
46
47
  end
47
48
  end
@@ -38,13 +38,13 @@ module PDD
38
38
  role = p.xpath('role/text()').to_s
39
39
  next nil if @roles.include?(role)
40
40
  "puzzle #{p.xpath('file/text()')}:#{p.xpath('lines/text()')}" +
41
- if role.empty?
42
- " doesn't define any role"\
43
- ", while one of these roles is required: #{@roles}"
44
- else
45
- " defines role #{role}"\
46
- ", while only these roles are allowed: #{@roles}"
47
- end
41
+ if role.empty?
42
+ " doesn't define any role"\
43
+ ", while one of these roles is required: #{@roles}"
44
+ else
45
+ " defines role #{role}"\
46
+ ", while only these roles are allowed: #{@roles}"
47
+ end
48
48
  end.compact
49
49
  end
50
50
  end
@@ -38,7 +38,7 @@ module PDD
38
38
  # Fetch all puzzles.
39
39
  def puzzles
40
40
  PDD.log.info "reading #{@path}..."
41
- re = /(.*(?:^|\s))@todo\s+#([\w\-\.:\/]+)\s+(.+)/
41
+ re = %r{(.*(?:^|\s))@todo\s+#([\w\-\.:/]+)\s+(.+)}
42
42
  puzzles = []
43
43
  lines = File.readlines(@file)
44
44
  lines.each_with_index do |line, idx|
@@ -51,8 +51,8 @@ module PDD
51
51
  end
52
52
  end
53
53
  lines.each_with_index do |line, idx|
54
- fail Error, "@todo found, but puzzle can't be parsed in line ##{idx}" \
55
- if /.*(^|\s)@todo\s+[^#]/.match(line)
54
+ raise Error, "@todo found, but puzzle can't be parsed in line ##{idx}" \
55
+ if line =~ /.*(^|\s)@todo\s+[^#]/
56
56
  end
57
57
  puzzles
58
58
  end
@@ -76,9 +76,9 @@ module PDD
76
76
 
77
77
  # Parse a marker.
78
78
  def marker(text)
79
- re = /([\w\d\-\.]+)(?::(\d+)(?:(m|h)[a-z]*)?)?(?:\/([A-Z]+))?/
79
+ re = %r{([\w\d\-\.]+)(?::(\d+)(?:(m|h)[a-z]*)?)?(?:/([A-Z]+))?}
80
80
  match = re.match(text)
81
- fail "invalid puzzle marker: #{text}" if match.nil?
81
+ raise "invalid puzzle marker: #{text}" if match.nil?
82
82
  {
83
83
  ticket: match[1],
84
84
  estimate: minutes(match[2], match[3]),
@@ -96,12 +96,12 @@ module PDD
96
96
  # Fetch puzzle tail (all lines after the first one)
97
97
  def tail(lines, prefix)
98
98
  lines
99
- .take_while { |txt| txt.start_with?(prefix) }
100
- .map { |txt| txt[prefix.length, txt.length] }
101
- .take_while { |txt| txt =~ /^[ a-zA-Z0-9]/ }
102
- .each { |txt| fail Error, 'Space expected' unless txt.start_with?(' ') }
103
- .each { |txt| fail Error, 'Too many spaces' if txt =~ /^\s{2,}/ }
104
- .map { |txt| txt[1, txt.length] }
99
+ .take_while { |t| t.start_with?(prefix) }
100
+ .map { |t| t[prefix.length, t.length] }
101
+ .take_while { |t| t =~ /^[ a-zA-Z0-9]/ }
102
+ .each { |t| raise Error, 'Space expected' unless t.start_with?(' ') }
103
+ .each { |t| raise Error, 'Too many spaces' if t =~ /^\s{2,}/ }
104
+ .map { |t| t[1, t.length] }
105
105
  end
106
106
 
107
107
  # Git information at the line
@@ -46,7 +46,7 @@ module PDD
46
46
  end
47
47
  end.to_a
48
48
  PDD.log.info "#{files.size} file(s) found"
49
- types = [/^text\//, /application\/xml/]
49
+ types = [%r{^text/}, %r{application/xml}]
50
50
  files
51
51
  .select { |f| types.index { |re| @magic.file(f) =~ re } }
52
52
  .map do |file|
@@ -26,5 +26,5 @@
26
26
  # Copyright:: Copyright (c) 2014-2016 Yegor Bugayenko
27
27
  # License:: MIT
28
28
  module PDD
29
- VERSION = '0.15.4'
29
+ VERSION = '0.16'.freeze
30
30
  end
@@ -41,19 +41,19 @@ Gem::Specification.new do |s|
41
41
  s.email = 'yegor@teamed.io'
42
42
  s.homepage = 'http://github.com/teamed/pdd'
43
43
  s.files = `git ls-files`.split($RS)
44
- s.executables = s.files.grep(/^bin\//) { |f| File.basename(f) }
45
- s.test_files = s.files.grep(/^(test|spec|features)\//)
44
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
45
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
46
46
  s.rdoc_options = ['--charset=UTF-8']
47
47
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
48
- s.add_runtime_dependency 'nokogiri', '1.6.7.1'
49
- s.add_runtime_dependency 'ruby-filemagic', '0.7.1'
50
- s.add_runtime_dependency 'slop', '3.6.0'
51
- s.add_runtime_dependency 'rake', '10.4.2'
48
+ s.add_runtime_dependency 'nokogiri', '~>1.6'
49
+ s.add_runtime_dependency 'ruby-filemagic', '~>0.7'
50
+ s.add_runtime_dependency 'slop', '~>3.6'
51
+ s.add_development_dependency 'rake', '10.5.0'
52
52
  s.add_development_dependency 'coveralls', '0.7.2'
53
53
  s.add_development_dependency 'rdoc', '4.2.0'
54
54
  s.add_development_dependency 'cucumber', '1.3.17'
55
55
  s.add_development_dependency 'minitest', '5.5.0'
56
- s.add_development_dependency 'rubocop', '0.24.1'
57
- s.add_development_dependency 'rubocop-rspec', '1.2.1'
56
+ s.add_development_dependency 'rubocop', '0.41.2'
57
+ s.add_development_dependency 'rubocop-rspec', '1.5.1'
58
58
  s.add_development_dependency 'rspec-rails', '3.1.0'
59
59
  end
@@ -63,7 +63,7 @@ class TestPDD < Minitest::Test
63
63
  skip if Gem.win_platform?
64
64
  Dir.mktmpdir 'test' do |dir|
65
65
  opts = opts(['-v', '-s', dir])
66
- fail unless system("
66
+ raise unless system("
67
67
  set -e
68
68
  cd '#{dir}'
69
69
  git init .
@@ -100,7 +100,7 @@ class TestPDD < Minitest::Test
100
100
 
101
101
  def matches(xml, xpaths)
102
102
  xpaths.each do |xpath|
103
- fail "doesn't match '#{xpath}': #{xml}" unless xml.xpath(xpath).size == 1
103
+ raise "doesn't match '#{xpath}': #{xml}" unless xml.xpath(xpath).size == 1
104
104
  end
105
105
  end
106
106
  end
@@ -90,7 +90,7 @@ class TestSource < Minitest::Test
90
90
  skip if Gem.win_platform?
91
91
  Dir.mktmpdir 'test' do |dir|
92
92
  file = File.join(dir, 'xx.txt')
93
- File.write(file, " * @todo #44 this is a broken unicode: \x92")
93
+ File.write(file, ' * @todo #44 this is a broken unicode: ' + 0x92.chr)
94
94
  assert_raises PDD::Error do
95
95
  PDD::VerboseSource.new(file, PDD::Source.new(file, 'xx')).puzzles
96
96
  end
@@ -117,7 +117,7 @@ class TestSource < Minitest::Test
117
117
  def test_reads_git_author
118
118
  skip if Gem.win_platform?
119
119
  Dir.mktmpdir 'test' do |dir|
120
- fail unless system("
120
+ raise unless system("
121
121
  set -e
122
122
  cd '#{dir}'
123
123
  git init .
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.4
4
+ version: '0.16'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-07 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.6.7.1
19
+ version: '1.6'
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
- version: 1.6.7.1
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ruby-filemagic
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.7.1
33
+ version: '0.7'
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.7.1
40
+ version: '0.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: slop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.6.0
47
+ version: '3.6'
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
- version: 3.6.0
54
+ version: '3.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 10.4.2
62
- type: :runtime
61
+ version: 10.5.0
62
+ type: :development
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: 10.4.2
68
+ version: 10.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coveralls
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,28 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 0.24.1
131
+ version: 0.41.2
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 0.24.1
138
+ version: 0.41.2
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 1.2.1
145
+ version: 1.5.1
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: 1.2.1
152
+ version: 1.5.1
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rspec-rails
155
155
  requirement: !ruby/object:Gem::Requirement