pdd 0.15.4 → 0.16

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 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