caperoma 0.1.0 → 4.0.1

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.
Files changed (85) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/Capefile +48 -0
  4. data/Capefile.template +48 -0
  5. data/Capefile.test +20 -0
  6. data/Gemfile +25 -10
  7. data/Gemfile.lock +196 -77
  8. data/HELP +321 -0
  9. data/README.md +528 -0
  10. data/Rakefile +73 -18
  11. data/VERSION +1 -1
  12. data/bin/caperoma +47 -11
  13. data/caperoma.gemspec +144 -45
  14. data/config/crontab +10 -0
  15. data/config/schedule.rb +21 -0
  16. data/lib/caperoma.rb +409 -9
  17. data/lib/caperoma/models/account.rb +47 -0
  18. data/lib/caperoma/models/application_record.rb +5 -0
  19. data/lib/caperoma/models/branch.rb +6 -0
  20. data/lib/caperoma/models/project.rb +14 -0
  21. data/lib/caperoma/models/property.rb +5 -0
  22. data/lib/caperoma/models/report.rb +177 -0
  23. data/lib/caperoma/models/report_recipient.rb +6 -0
  24. data/lib/caperoma/models/reports/daily_report.rb +23 -0
  25. data/lib/caperoma/models/reports/retrospective_report.rb +19 -0
  26. data/lib/caperoma/models/reports/three_day_report.rb +19 -0
  27. data/lib/caperoma/models/task.rb +368 -0
  28. data/lib/caperoma/models/tasks/bug.rb +36 -0
  29. data/lib/caperoma/models/tasks/chore.rb +40 -0
  30. data/lib/caperoma/models/tasks/feature.rb +27 -0
  31. data/lib/caperoma/models/tasks/fix.rb +56 -0
  32. data/lib/caperoma/models/tasks/meeting.rb +40 -0
  33. data/lib/caperoma/models/tasks/modules/git.rb +65 -0
  34. data/lib/caperoma/models/tasks/task_with_commit.rb +40 -0
  35. data/lib/caperoma/models/tasks/task_with_separate_branch.rb +42 -0
  36. data/lib/caperoma/services/airbrake_email_processor.rb +47 -0
  37. data/lib/caperoma/services/pivotal_fetcher.rb +108 -0
  38. data/lib/caperoma/version.rb +9 -0
  39. data/spec/caperoma_spec.rb +3 -21
  40. data/spec/factories/accounts.rb +10 -0
  41. data/spec/factories/branches.rb +9 -0
  42. data/spec/factories/projects.rb +8 -0
  43. data/spec/factories/report_recipients.rb +7 -0
  44. data/spec/factories/reports.rb +16 -0
  45. data/spec/factories/tasks.rb +37 -0
  46. data/spec/features/bug_spec.rb +60 -0
  47. data/spec/features/chore_spec.rb +60 -0
  48. data/spec/features/command_unknown_spec.rb +14 -0
  49. data/spec/features/config_spec.rb +161 -0
  50. data/spec/features/feature_spec.rb +60 -0
  51. data/spec/features/finish_spec.rb +18 -0
  52. data/spec/features/fix_spec.rb +60 -0
  53. data/spec/features/meeting_spec.rb +22 -0
  54. data/spec/features/projects_spec.rb +17 -0
  55. data/spec/features/report_recipientss_spec.rb +117 -0
  56. data/spec/features/reports_spec.rb +65 -0
  57. data/spec/features/status_spec.rb +33 -0
  58. data/spec/features/version_spec.rb +11 -0
  59. data/spec/models/account_spec.rb +51 -0
  60. data/spec/models/branch_spec.rb +8 -0
  61. data/spec/models/bug_spec.rb +33 -0
  62. data/spec/models/chore_spec.rb +33 -0
  63. data/spec/models/daily_report_spec.rb +38 -0
  64. data/spec/models/feature_spec.rb +33 -0
  65. data/spec/models/fix_spec.rb +55 -0
  66. data/spec/models/meeting_spec.rb +33 -0
  67. data/spec/models/project_spec.rb +11 -0
  68. data/spec/models/report_recipient_spec.rb +22 -0
  69. data/spec/models/report_spec.rb +16 -0
  70. data/spec/models/retrospective_report_spec.rb +38 -0
  71. data/spec/models/task_spec.rb +613 -0
  72. data/spec/models/task_with_commit_spec.rb +105 -0
  73. data/spec/models/task_with_separate_branch_spec.rb +97 -0
  74. data/spec/models/three_day_report_spec.rb +49 -0
  75. data/spec/spec_helper.rb +26 -16
  76. data/spec/support/capefile_generator.rb +36 -0
  77. data/spec/support/database_cleaner.rb +21 -0
  78. data/spec/support/stubs.rb +178 -9
  79. metadata +283 -42
  80. data/.document +0 -5
  81. data/README.rdoc +0 -26
  82. data/lib/caperoma/credentials.rb +0 -13
  83. data/lib/caperoma/jira_client.rb +0 -57
  84. data/spec/caperoma/credentials_spec.rb +0 -25
  85. data/spec/caperoma/jira_spec.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d72c64e6ffa869310d552b75afc267f0e3cdeb24
4
- data.tar.gz: 1d4b90b821373516c202499febde36b2a10e44cf
2
+ SHA256:
3
+ metadata.gz: 8a648f676cfe9c4062e1598073274c668162b813e7ddfeba586d3c46479bfe76
4
+ data.tar.gz: 91239642ce5d990d056f72c2c1147ce37ba9252bbe69c180cdd11e7232f2d229
5
5
  SHA512:
6
- metadata.gz: 64e94f6d47bcca0dbaa4ba54ae249455193377fa08f8f07e8935e930ba9425bb76d1b2a4c12f998c91a27ac3e087f1850e99c8a69b102427a9330f9a034c0db0
7
- data.tar.gz: cac0ae435cc34c0fcefa5fa9477325b8021e8b84d698fd48111000ee970b937087ddc8e9c2c1990b17ca1c41e62961d50cd6b411fb4a248ac19846eb17f804f0
6
+ metadata.gz: afa44dd7474666982ee43221b177cc6c27837df1ac5dbe472abbe2a6b3a4260c0e8618924d82d0bbcb204dadbefb8784f694b43be1237b28997fdf4f51bdf19e
7
+ data.tar.gz: b5414cb1fa697731ebdf4172519862506a0531fb3f554c4307503e62100ec821e5800585d40848a604b3ca0990cf88fb62e9f0a670fe6511fde6f9dbd34360fd
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.3
data/Capefile ADDED
@@ -0,0 +1,48 @@
1
+ # Capefile is a settings file for Caperoma (programming automation system).
2
+ # More detailed information about Caperoma can be found on these sites:
3
+ # http://caperoma.io
4
+ # https://github.com/zoopyserg/caperoma/
5
+ # https://rubygems.org/gems/caperoma
6
+ # http://www.rubydoc.info/gems/caperoma/4.0.1
7
+
8
+ # This file is formatted as a YAML document.
9
+
10
+ # A working example of this configuration file in a live project can be seen here:
11
+ # https://github.com/zoopyserg/caperoma/blob/master/Capefile
12
+
13
+ # --- GITHUB SETTINGS:
14
+ ## The relative path to the repository of this project on Github, to which you need to send pull requests.
15
+ github_repo: zoopyserg/caperoma
16
+
17
+ # --- JIRA SETTINGS:
18
+ ## The full URL of your Jira server where you will create tasks.
19
+ jira_url: https://zoopyserg.atlassian.net/
20
+
21
+ ## The ID of this project on your Jira system.
22
+ jira_project_id: 10001
23
+
24
+ ## Issue identifiers of various types on your Jira system.
25
+ jira_issue_type_ids:
26
+ feature: 10101
27
+ bug: 10103
28
+ chore: 10100
29
+ fix: 10101
30
+ meeting: 10100
31
+
32
+ ## Jira conversion identifiers.
33
+ jira_transition_ids:
34
+ todo: 11
35
+ in_progress: 21
36
+ done: 31
37
+
38
+ # --- PIVOTAL TRAKCER SETTINGS:
39
+ ## The ID of this project on the PivotalTracker site.
40
+ pivotal_tracker_project_id: 2374972
41
+
42
+ ## What tasks to create in PivotalTracker in case the task from Pivotal is not attached to the task in Caperoma
43
+ ## (i.e. the -p or --pivotal_id parameter was not specified at the time of the task start).
44
+ create_features_in_pivotal: true
45
+ create_bugs_in_pivotal: true
46
+ create_chores_in_pivotal: true
47
+ create_fixes_in_pivotal_as_chores: false
48
+ create_meetings_in_pivotal_as_chores: false
data/Capefile.template ADDED
@@ -0,0 +1,48 @@
1
+ # Capefile is a settings file for Caperoma (programming automation system).
2
+ # More detailed information about Caperoma can be found on these sites:
3
+ # http://caperoma.io
4
+ # https://github.com/zoopyserg/caperoma/
5
+ # https://rubygems.org/gems/caperoma
6
+ # http://www.rubydoc.info/gems/caperoma/4.0.1
7
+
8
+ # This file is formatted as a YAML document.
9
+
10
+ # A working example of this configuration file in a live project can be seen here:
11
+ # https://github.com/zoopyserg/caperoma/blob/master/Capefile
12
+
13
+ # --- GITHUB SETTINGS:
14
+ ## The relative path to the repository of this project on Github, to which you need to send pull requests.
15
+ # github_repo: owner/repository
16
+
17
+ # --- JIRA SETTINGS:
18
+ ## The full URL of your Jira server where you will create tasks.
19
+ # jira_url: https://example.atlassian.net/
20
+
21
+ ## The ID of this project on your Jira system.
22
+ # jira_project_id: 12345
23
+
24
+ ## Issue identifiers of various types on your Jira system.
25
+ # jira_issue_type_ids:
26
+ # feature: 10101
27
+ # bug: 10103
28
+ # chore: 10100
29
+ # fix: 10101
30
+ # meeting: 10100
31
+
32
+ ## Jira conversion identifiers.
33
+ # jira_transition_ids:
34
+ # todo: 11
35
+ # in_progress: 21
36
+ # done: 31
37
+
38
+ # --- PIVOTAL TRAKCER SETTINGS:
39
+ ## The ID of this project on the PivotalTracker site.
40
+ # pivotal_tracker_project_id: 12345678
41
+
42
+ ## What tasks to create in PivotalTracker in case the task from Pivotal is not attached to the task in Caperoma
43
+ ## (i.e. the -p or --pivotal_id parameter was not specified at the time of the task start).
44
+ # create_features_in_pivotal: true
45
+ # create_bugs_in_pivotal: true
46
+ # create_chores_in_pivotal: true
47
+ # create_fixes_in_pivotal_as_chores: false
48
+ # create_meetings_in_pivotal_as_chores: false
data/Capefile.test ADDED
@@ -0,0 +1,20 @@
1
+ ---
2
+ github_repo: owner/repo
3
+ jira_url: https://owner.atlassian.net/
4
+ jira_project_id: '123'
5
+ jira_issue_type_ids:
6
+ feature: 10101
7
+ bug: 10103
8
+ chore: 10100
9
+ fix: 10101
10
+ meeting: 10100
11
+ jira_transition_ids:
12
+ todo: 11
13
+ in_progress: 21
14
+ done: 31
15
+ pivotal_tracker_project_id: 2374972
16
+ create_features_in_pivotal: true
17
+ create_bugs_in_pivotal: true
18
+ create_chores_in_pivotal: true
19
+ create_fixes_in_pivotal_as_chores: false
20
+ create_meetings_in_pivotal_as_chores: false
data/Gemfile CHANGED
@@ -1,16 +1,31 @@
1
- source 'http://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ ruby '2.6.3'
2
6
 
3
7
  # Runtime dependencies
4
- # gem 'activesupport'
5
- gem 'jira-ruby', :require => 'jira'
8
+ gem 'actionpack'
9
+ gem 'actionview'
10
+ gem 'activerecord'
11
+ gem 'activesupport'
12
+ gem 'faraday'
13
+ gem 'gmail'
14
+ gem 'jbuilder'
15
+ gem 'pivotal-tracker'
16
+ gem 'rubocop'
17
+ gem 'sqlite3'
18
+ gem 'time_difference'
19
+ gem 'whenever', require: false
6
20
 
7
- # Add dependencies to develop your gem here.
8
- # Include everything needed to run rake, tests, features, etc.
9
21
  group :development do
10
- gem 'shoulda', '>= 0'
11
- gem 'rdoc', '~> 3.12'
12
- gem 'bundler', '~> 1.0'
13
- gem 'jeweler', '~> 2.0.1'
14
- gem 'simplecov', '>= 0'
22
+ gem 'bundler'
23
+ gem 'database_cleaner'
24
+ gem 'factory_bot_rails'
25
+ gem 'juwelier'
26
+ gem 'rdoc'
15
27
  gem 'rspec'
28
+ gem 'shoulda'
29
+ gem 'shoulda-matchers'
30
+ gem 'timecop'
16
31
  end
data/Gemfile.lock CHANGED
@@ -1,99 +1,218 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (4.1.4)
5
- i18n (~> 0.6, >= 0.6.9)
6
- json (~> 1.7, >= 1.7.7)
4
+ actionpack (5.2.3)
5
+ actionview (= 5.2.3)
6
+ activesupport (= 5.2.3)
7
+ rack (~> 2.0)
8
+ rack-test (>= 0.6.3)
9
+ rails-dom-testing (~> 2.0)
10
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
11
+ actionview (5.2.3)
12
+ activesupport (= 5.2.3)
13
+ builder (~> 3.1)
14
+ erubi (~> 1.4)
15
+ rails-dom-testing (~> 2.0)
16
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
17
+ activemodel (5.2.3)
18
+ activesupport (= 5.2.3)
19
+ activerecord (5.2.3)
20
+ activemodel (= 5.2.3)
21
+ activesupport (= 5.2.3)
22
+ arel (>= 9.0)
23
+ activesupport (5.2.3)
24
+ concurrent-ruby (~> 1.0, >= 1.0.2)
25
+ i18n (>= 0.7, < 2)
7
26
  minitest (~> 5.1)
8
- thread_safe (~> 0.1)
9
27
  tzinfo (~> 1.1)
10
- addressable (2.3.6)
11
- builder (3.2.2)
28
+ addressable (2.6.0)
29
+ public_suffix (>= 2.0.2, < 4.0)
30
+ arel (9.0.0)
31
+ ast (2.4.0)
32
+ builder (3.2.3)
33
+ chronic (0.10.2)
34
+ concurrent-ruby (1.1.5)
35
+ crack (0.4.3)
36
+ safe_yaml (~> 1.0.0)
37
+ crass (1.0.4)
38
+ database_cleaner (1.7.0)
12
39
  descendants_tracker (0.0.4)
13
40
  thread_safe (~> 0.3, >= 0.3.1)
14
- diff-lcs (1.2.5)
15
- docile (1.1.5)
16
- faraday (0.9.0)
41
+ diff-lcs (1.3)
42
+ domain_name (0.5.20190701)
43
+ unf (>= 0.0.5, < 1.0.0)
44
+ erubi (1.8.0)
45
+ factory_bot (5.0.2)
46
+ activesupport (>= 4.2.0)
47
+ factory_bot_rails (5.0.2)
48
+ factory_bot (~> 5.0.2)
49
+ railties (>= 4.2.0)
50
+ faraday (0.15.4)
17
51
  multipart-post (>= 1.2, < 3)
18
- git (1.2.7)
19
- github_api (0.11.3)
20
- addressable (~> 2.3)
21
- descendants_tracker (~> 0.0.1)
22
- faraday (~> 0.8, < 0.10)
23
- hashie (>= 1.2)
24
- multi_json (>= 1.7.5, < 2.0)
25
- nokogiri (~> 1.6.0)
26
- oauth2
27
- hashie (3.2.0)
28
- highline (1.6.21)
29
- i18n (0.6.11)
30
- jeweler (2.0.1)
52
+ git (1.5.0)
53
+ github_api (0.18.2)
54
+ addressable (~> 2.4)
55
+ descendants_tracker (~> 0.0.4)
56
+ faraday (~> 0.8)
57
+ hashie (~> 3.5, >= 3.5.2)
58
+ oauth2 (~> 1.0)
59
+ gmail (0.7.1)
60
+ gmail_xoauth (>= 0.3.0)
61
+ mail (>= 2.2.1)
62
+ gmail_xoauth (0.4.2)
63
+ oauth (>= 0.3.6)
64
+ hashie (3.6.0)
65
+ highline (2.0.2)
66
+ http-cookie (1.0.3)
67
+ domain_name (~> 0.5)
68
+ i18n (1.6.0)
69
+ concurrent-ruby (~> 1.0)
70
+ jaro_winkler (1.5.3)
71
+ jbuilder (2.9.1)
72
+ activesupport (>= 4.2.0)
73
+ juwelier (2.4.9)
31
74
  builder
32
- bundler (>= 1.0)
33
- git (>= 1.2.5)
75
+ bundler
76
+ git
34
77
  github_api
35
- highline (>= 1.6.15)
36
- nokogiri (>= 1.5.10)
78
+ highline
79
+ kamelcase (~> 0)
80
+ nokogiri
81
+ psych
37
82
  rake
38
83
  rdoc
39
- jira-ruby (0.1.10)
40
- activesupport
41
- oauth
42
- json (1.8.1)
43
- jwt (1.0.0)
44
- mini_portile (0.6.0)
45
- minitest (5.4.0)
46
- multi_json (1.10.1)
47
- multi_xml (0.5.5)
48
- multipart-post (2.0.0)
49
- nokogiri (1.6.2.1)
50
- mini_portile (= 0.6.0)
51
- oauth (0.4.7)
52
- oauth2 (1.0.0)
53
- faraday (>= 0.8, < 0.10)
54
- jwt (~> 1.0)
84
+ semver2
85
+ jwt (2.2.1)
86
+ kamelcase (0.0.2)
87
+ semver2 (~> 3)
88
+ loofah (2.2.3)
89
+ crass (~> 1.0.2)
90
+ nokogiri (>= 1.5.9)
91
+ mail (2.7.1)
92
+ mini_mime (>= 0.1.1)
93
+ method_source (0.9.2)
94
+ mime-types (3.2.2)
95
+ mime-types-data (~> 3.2015)
96
+ mime-types-data (3.2019.0331)
97
+ mini_mime (1.0.2)
98
+ mini_portile2 (2.4.0)
99
+ minitest (5.11.3)
100
+ multi_json (1.13.1)
101
+ multi_xml (0.6.0)
102
+ multipart-post (2.1.1)
103
+ netrc (0.11.0)
104
+ nokogiri (1.10.3)
105
+ mini_portile2 (~> 2.4.0)
106
+ nokogiri-happymapper (0.8.1)
107
+ nokogiri (~> 1.5)
108
+ oauth (0.5.4)
109
+ oauth2 (1.4.1)
110
+ faraday (>= 0.8, < 0.16.0)
111
+ jwt (>= 1.0, < 3.0)
55
112
  multi_json (~> 1.3)
56
113
  multi_xml (~> 0.5)
57
- rack (~> 1.2)
58
- rack (1.5.2)
59
- rake (10.3.2)
60
- rdoc (3.12.2)
61
- json (~> 1.4)
62
- rspec (3.0.0)
63
- rspec-core (~> 3.0.0)
64
- rspec-expectations (~> 3.0.0)
65
- rspec-mocks (~> 3.0.0)
66
- rspec-core (3.0.2)
67
- rspec-support (~> 3.0.0)
68
- rspec-expectations (3.0.2)
114
+ rack (>= 1.2, < 3)
115
+ parallel (1.17.0)
116
+ parser (2.6.3.0)
117
+ ast (~> 2.4.0)
118
+ pivotal-tracker (0.5.13)
119
+ builder
120
+ crack
121
+ nokogiri (>= 1.5.5)
122
+ nokogiri-happymapper (>= 0.5.4)
123
+ rest-client (>= 1.8.0)
124
+ psych (3.1.0)
125
+ public_suffix (3.1.1)
126
+ rack (2.0.7)
127
+ rack-test (1.1.0)
128
+ rack (>= 1.0, < 3)
129
+ rails-dom-testing (2.0.3)
130
+ activesupport (>= 4.2.0)
131
+ nokogiri (>= 1.6)
132
+ rails-html-sanitizer (1.0.4)
133
+ loofah (~> 2.2, >= 2.2.2)
134
+ railties (5.2.3)
135
+ actionpack (= 5.2.3)
136
+ activesupport (= 5.2.3)
137
+ method_source
138
+ rake (>= 0.8.7)
139
+ thor (>= 0.19.0, < 2.0)
140
+ rainbow (3.0.0)
141
+ rake (12.3.3)
142
+ rdoc (6.1.1)
143
+ rest-client (2.0.2)
144
+ http-cookie (>= 1.0.2, < 2.0)
145
+ mime-types (>= 1.16, < 4.0)
146
+ netrc (~> 0.8)
147
+ rspec (3.8.0)
148
+ rspec-core (~> 3.8.0)
149
+ rspec-expectations (~> 3.8.0)
150
+ rspec-mocks (~> 3.8.0)
151
+ rspec-core (3.8.2)
152
+ rspec-support (~> 3.8.0)
153
+ rspec-expectations (3.8.4)
154
+ diff-lcs (>= 1.2.0, < 2.0)
155
+ rspec-support (~> 3.8.0)
156
+ rspec-mocks (3.8.1)
69
157
  diff-lcs (>= 1.2.0, < 2.0)
70
- rspec-support (~> 3.0.0)
71
- rspec-mocks (3.0.2)
72
- rspec-support (~> 3.0.0)
73
- rspec-support (3.0.2)
74
- shoulda (3.5.0)
75
- shoulda-context (~> 1.0, >= 1.0.1)
76
- shoulda-matchers (>= 1.4.1, < 3.0)
77
- shoulda-context (1.2.1)
78
- shoulda-matchers (2.6.2)
79
- activesupport (>= 3.0.0)
80
- simplecov (0.9.0)
81
- docile (~> 1.1.0)
82
- multi_json
83
- simplecov-html (~> 0.8.0)
84
- simplecov-html (0.8.0)
85
- thread_safe (0.3.4)
86
- tzinfo (1.2.1)
158
+ rspec-support (~> 3.8.0)
159
+ rspec-support (3.8.2)
160
+ rubocop (0.73.0)
161
+ jaro_winkler (~> 1.5.1)
162
+ parallel (~> 1.10)
163
+ parser (>= 2.6)
164
+ rainbow (>= 2.2.2, < 4.0)
165
+ ruby-progressbar (~> 1.7)
166
+ unicode-display_width (>= 1.4.0, < 1.7)
167
+ ruby-progressbar (1.10.1)
168
+ safe_yaml (1.0.5)
169
+ semver2 (3.4.2)
170
+ shoulda (2.11.3)
171
+ shoulda-matchers (4.1.1)
172
+ activesupport (>= 4.2.0)
173
+ sqlite3 (1.4.1)
174
+ thor (0.20.3)
175
+ thread_safe (0.3.6)
176
+ time_difference (0.7.0)
177
+ activesupport (~> 5.1)
178
+ timecop (0.9.1)
179
+ tzinfo (1.2.5)
87
180
  thread_safe (~> 0.1)
181
+ unf (0.1.4)
182
+ unf_ext
183
+ unf_ext (0.0.7.6)
184
+ unicode-display_width (1.6.0)
185
+ whenever (1.0.0)
186
+ chronic (>= 0.6.3)
88
187
 
89
188
  PLATFORMS
90
189
  ruby
91
190
 
92
191
  DEPENDENCIES
93
- bundler (~> 1.0)
94
- jeweler (~> 2.0.1)
95
- jira-ruby
96
- rdoc (~> 3.12)
192
+ actionpack
193
+ actionview
194
+ activerecord
195
+ activesupport
196
+ bundler
197
+ database_cleaner
198
+ factory_bot_rails
199
+ faraday
200
+ gmail
201
+ jbuilder
202
+ juwelier
203
+ pivotal-tracker
204
+ rdoc
97
205
  rspec
206
+ rubocop
98
207
  shoulda
99
- simplecov
208
+ shoulda-matchers
209
+ sqlite3
210
+ time_difference
211
+ timecop
212
+ whenever
213
+
214
+ RUBY VERSION
215
+ ruby 2.6.3p62
216
+
217
+ BUNDLED WITH
218
+ 1.17.3