serviceworker-rails 0.6.0 → 0.7.0

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +66 -0
  3. data/.github/workflows/release.yml +31 -0
  4. data/.gitignore +0 -2
  5. data/.node-version +1 -0
  6. data/.rubocop.yml +18 -103
  7. data/.ruby-version +1 -0
  8. data/.standard.yml +1 -0
  9. data/CHANGELOG.md +6 -0
  10. data/Gemfile +6 -6
  11. data/Gemfile.lock +355 -0
  12. data/Guardfile +3 -3
  13. data/README.md +6 -8
  14. data/Rakefile +7 -12
  15. data/bin/setup +4 -1
  16. data/bin/standardrb +29 -0
  17. data/gemfiles/rails_7.0.gemfile +12 -0
  18. data/gemfiles/rails_7.0.gemfile.lock +324 -0
  19. data/gemfiles/rails_7.1.gemfile +12 -0
  20. data/gemfiles/rails_7.1.gemfile.lock +348 -0
  21. data/gemfiles/rails_8.0.gemfile +12 -0
  22. data/gemfiles/rails_8.0.gemfile.lock +479 -0
  23. data/gemfiles/rails_8.1.gemfile +12 -0
  24. data/gemfiles/rails_8.1.gemfile.lock +486 -0
  25. data/gemfiles/rails_8.1_rack3.gemfile +20 -0
  26. data/gemfiles/rails_8.1_rack3.gemfile.lock +485 -0
  27. data/lib/assets/images/serviceworker-rails/heart-144x144.png +0 -0
  28. data/lib/assets/images/serviceworker-rails/heart-384x384.png +0 -0
  29. data/lib/generators/serviceworker/install_generator.rb +1 -20
  30. data/lib/generators/serviceworker/templates/serviceworker-companion.js +10 -5
  31. data/lib/generators/serviceworker/templates/serviceworker.js +3 -3
  32. data/lib/serviceworker/engine.rb +1 -1
  33. data/lib/serviceworker/handlers/rack_handler.rb +11 -1
  34. data/lib/serviceworker/handlers/sprockets_handler.rb +11 -3
  35. data/lib/serviceworker/handlers.rb +3 -13
  36. data/lib/serviceworker/middleware.rb +2 -2
  37. data/lib/serviceworker/rails/version.rb +1 -1
  38. data/lib/serviceworker/route.rb +19 -27
  39. data/lib/serviceworker/router.rb +7 -8
  40. data/serviceworker-rails.gemspec +23 -14
  41. metadata +160 -27
  42. data/.travis.yml +0 -28
  43. data/Appraisals +0 -26
  44. data/bin/appraisal +0 -18
  45. data/gemfiles/rails_3.2.gemfile +0 -15
  46. data/gemfiles/rails_4.2.gemfile +0 -15
  47. data/gemfiles/rails_5.0.gemfile +0 -15
  48. data/gemfiles/rails_5.1.gemfile +0 -15
  49. data/gemfiles/rails_5.2.gemfile +0 -15
  50. data/lib/serviceworker/handlers/webpacker_handler.rb +0 -29
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Build Status](https://travis-ci.org/rossta/serviceworker-rails.svg?branch=master)](https://travis-ci.org/rossta/serviceworker-rails)
4
4
  [![Code Climate](https://codeclimate.com/github/rossta/serviceworker-rails/badges/gpa.svg)](https://codeclimate.com/github/rossta/serviceworker-rails)
5
5
 
6
- Turn your Rails app into a Progressive Web App. Use [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) with the Rails [asset pipeline](https://github.com/rails/sprockets-rails) or [Webpacker](https://github.com/rails/webpacker)
6
+ Turn your Rails app into a Progressive Web App. Use [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) with the Rails [asset pipeline](https://github.com/rails/sprockets-rails)
7
7
 
8
8
  ## Why?
9
9
 
@@ -18,7 +18,7 @@ with requests and responses within `/assets/`<em>**</em>. This is not what we wa
18
18
 
19
19
  * [MDN states](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API#Download_install_and_activate) browsers check for updated service worker scripts in the background every 24 hours (possibly less). Rails developers wouldn't be able to take advantage of this feature since the fingerprint strategy means assets at a given url are immutable. Beside fingerprintings, the `Cache-Control` headers used for static files served from Rails also work against browser's treatment of service workers.
20
20
 
21
- We want Sprockets or Webpacker to compile service worker JavaScript from ES6/7, CoffeeScript, ERB, etc. but must remove the caching and scoping mechanisms offered by Rails defaults. This is where `serviceworker-rails` comes in.
21
+ We want Sprockets to compile service worker JavaScript from ES6/7, CoffeeScript, ERB, etc. but must remove the caching and scoping mechanisms offered by Rails defaults. This is where `serviceworker-rails` comes in.
22
22
 
23
23
  *Check out the [blog post](https://rossta.net/blog/service-worker-on-rails.html)
24
24
  for more background.*
@@ -75,13 +75,15 @@ The generator will create the following files:
75
75
 
76
76
  It will also make the following modifications to existing files:
77
77
 
78
- * Adds a sprockets directive to `application.js` to require
79
- `serviceworker-companion.js`
80
78
  * Adds `serviceworker.js` and `manifest.json` to the list of compiled assets in
81
79
  `config/initializers/assets.rb`
82
80
  * Injects tags into the `head` of `app/views/layouts/application.html.erb` for
83
81
  linking to the web app manifest
84
82
 
83
+ Due to the variety of possible javascript implementations, you will still need to perform the following task manually:
84
+
85
+ * Require the Service Worker companion in your javascript entry point. For example, using the Sprockets asset pipeline, you would add `//= require serviceworker-companion` in `app/assets/javascripts/application.js`. If you're using Importmaps and the `app/javascript` directory, you can move the generated files in `app/assets/javascripts` to `app/javascript` and add `import 'serviceworker-companion'` to `app/javascript/application.js`.
86
+
85
87
  **NOTE** Given that Service Worker operates in a separate browser thread, outside the context of your web pages, you don't want to include `serviceworker.js` script in your `application.js`. So if you have a line like `require_tree .` in your `application.js` file, you'll either need to move your `serviceworker.js` to another location or replace `require_tree` with something more explicit.
86
88
 
87
89
  To learn more about each of the changes or to perform the set up yourself, check
@@ -271,9 +273,6 @@ Rails.application.configure do
271
273
  match "/header-serviceworker.js" => "another/serviceworker.js",
272
274
  headers: { "X-Resource-Header" => "A resource" }
273
275
 
274
- # maps to serviceworker "pack" compiled by Webpacker
275
- match "/webpack-serviceworker.js" => "serviceworker.js", pack: true
276
-
277
276
  # anonymous glob exposes `paths` variable for interpolation
278
277
  match "/*/serviceworker.js" => "%{paths}/serviceworker.js"
279
278
  end
@@ -300,4 +299,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/rossta
300
299
  ## License
301
300
 
302
301
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
303
-
data/Rakefile CHANGED
@@ -4,34 +4,29 @@ require "rubygems"
4
4
  require "bundler/setup"
5
5
  require "bundler/gem_tasks"
6
6
  require "rake/testtask"
7
- require "rubocop/rake_task"
7
+ require "standard/rake"
8
8
 
9
9
  APP_RAKEFILE = File.expand_path("test/sample/Rakefile", __dir__)
10
10
  load "rails/tasks/engine.rake"
11
11
 
12
- RuboCop::RakeTask.new
13
-
14
12
  Rake::TestTask.new(:test) do |t|
15
13
  t.libs << "test"
16
14
  t.libs << "lib"
17
15
  t.test_files = FileList["test/**/*_test.rb"]
18
16
  end
19
17
 
20
- task default: %i[test rubocop]
18
+ task default: %i[test standard]
21
19
 
22
- task :compile do
23
- if defined?(Webpacker)
20
+ namespace :app do
21
+ task :yarn_install do
24
22
  Dir.chdir("test/sample") do
25
- sh "NODE_ENV=test yarn install"
26
- sh "RAILS_ENV=test ./bin/rake webpacker:compile"
23
+ sh "yarn install"
27
24
  end
28
25
  end
29
- end
30
26
 
31
- Rake::Task[:test].enhance [:compile] do
32
- if defined?(Webpacker)
27
+ task :yarn_install_frozen do
33
28
  Dir.chdir("test/sample") do
34
- sh "RAILS_ENV=test ./bin/rake webpacker:clobber"
29
+ sh "yarn install --frozen-lockfile"
35
30
  end
36
31
  end
37
32
  end
data/bin/setup CHANGED
@@ -5,4 +5,7 @@ set -vx
5
5
 
6
6
  bundle install
7
7
 
8
- # Do any other automated setup that you need to do here
8
+ BUNDLE_GEMFILE=gemfiles/rails_6.0.gemfile bundle install
9
+ BUNDLE_GEMFILE=gemfiles/rails_6.1.gemfile bundle install
10
+ BUNDLE_GEMFILE=gemfiles/rails_7.0.gemfile bundle install
11
+ BUNDLE_GEMFILE=gemfiles/rails_7.1.gemfile bundle install
data/bin/standardrb ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'standardrb' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("standard", "standardrb")
@@ -0,0 +1,12 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 7.0.0"
4
+
5
+ group :development, :test do
6
+ gem "guard", require: false
7
+ gem "guard-minitest", require: false
8
+ gem "pry"
9
+ gem "pry-byebug", platforms: [:mri]
10
+ end
11
+
12
+ gemspec path: "../"
@@ -0,0 +1,324 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ serviceworker-rails (0.7.0)
5
+ benchmark
6
+ bigdecimal
7
+ cgi
8
+ drb
9
+ logger
10
+ mutex_m
11
+ ostruct
12
+ rack (>= 2.1)
13
+ railties (>= 7.0)
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ actioncable (7.0.8.4)
19
+ actionpack (= 7.0.8.4)
20
+ activesupport (= 7.0.8.4)
21
+ nio4r (~> 2.0)
22
+ websocket-driver (>= 0.6.1)
23
+ actionmailbox (7.0.8.4)
24
+ actionpack (= 7.0.8.4)
25
+ activejob (= 7.0.8.4)
26
+ activerecord (= 7.0.8.4)
27
+ activestorage (= 7.0.8.4)
28
+ activesupport (= 7.0.8.4)
29
+ mail (>= 2.7.1)
30
+ net-imap
31
+ net-pop
32
+ net-smtp
33
+ actionmailer (7.0.8.4)
34
+ actionpack (= 7.0.8.4)
35
+ actionview (= 7.0.8.4)
36
+ activejob (= 7.0.8.4)
37
+ activesupport (= 7.0.8.4)
38
+ mail (~> 2.5, >= 2.5.4)
39
+ net-imap
40
+ net-pop
41
+ net-smtp
42
+ rails-dom-testing (~> 2.0)
43
+ actionpack (7.0.8.4)
44
+ actionview (= 7.0.8.4)
45
+ activesupport (= 7.0.8.4)
46
+ rack (~> 2.0, >= 2.2.4)
47
+ rack-test (>= 0.6.3)
48
+ rails-dom-testing (~> 2.0)
49
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
50
+ actiontext (7.0.8.4)
51
+ actionpack (= 7.0.8.4)
52
+ activerecord (= 7.0.8.4)
53
+ activestorage (= 7.0.8.4)
54
+ activesupport (= 7.0.8.4)
55
+ globalid (>= 0.6.0)
56
+ nokogiri (>= 1.8.5)
57
+ actionview (7.0.8.4)
58
+ activesupport (= 7.0.8.4)
59
+ builder (~> 3.1)
60
+ erubi (~> 1.4)
61
+ rails-dom-testing (~> 2.0)
62
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
63
+ activejob (7.0.8.4)
64
+ activesupport (= 7.0.8.4)
65
+ globalid (>= 0.3.6)
66
+ activemodel (7.0.8.4)
67
+ activesupport (= 7.0.8.4)
68
+ activerecord (7.0.8.4)
69
+ activemodel (= 7.0.8.4)
70
+ activesupport (= 7.0.8.4)
71
+ activestorage (7.0.8.4)
72
+ actionpack (= 7.0.8.4)
73
+ activejob (= 7.0.8.4)
74
+ activerecord (= 7.0.8.4)
75
+ activesupport (= 7.0.8.4)
76
+ marcel (~> 1.0)
77
+ mini_mime (>= 1.1.0)
78
+ activesupport (7.0.8.4)
79
+ concurrent-ruby (~> 1.0, >= 1.0.2)
80
+ i18n (>= 1.6, < 2)
81
+ minitest (>= 5.1)
82
+ tzinfo (~> 2.0)
83
+ ast (2.4.2)
84
+ base64 (0.2.0)
85
+ benchmark (0.5.0)
86
+ bigdecimal (4.1.2)
87
+ builder (3.3.0)
88
+ byebug (13.0.0)
89
+ reline (>= 0.6.0)
90
+ cgi (0.5.1)
91
+ coderay (1.1.3)
92
+ concurrent-ruby (1.3.3)
93
+ crass (1.0.6)
94
+ date (3.5.1)
95
+ docile (1.4.0)
96
+ drb (2.2.3)
97
+ erubi (1.13.0)
98
+ ffi (1.17.4-aarch64-linux-gnu)
99
+ ffi (1.17.4-aarch64-linux-musl)
100
+ ffi (1.17.4-arm-linux-gnu)
101
+ ffi (1.17.4-arm-linux-musl)
102
+ ffi (1.17.4-arm64-darwin)
103
+ ffi (1.17.4-x86-linux-gnu)
104
+ ffi (1.17.4-x86-linux-musl)
105
+ ffi (1.17.4-x86_64-darwin)
106
+ ffi (1.17.4-x86_64-linux-gnu)
107
+ ffi (1.17.4-x86_64-linux-musl)
108
+ formatador (1.1.0)
109
+ globalid (1.2.1)
110
+ activesupport (>= 6.1)
111
+ guard (2.18.1)
112
+ formatador (>= 0.2.4)
113
+ listen (>= 2.7, < 4.0)
114
+ lumberjack (>= 1.0.12, < 2.0)
115
+ nenv (~> 0.1)
116
+ notiffany (~> 0.0)
117
+ pry (>= 0.13.0)
118
+ shellany (~> 0.0)
119
+ thor (>= 0.18.1)
120
+ guard-compat (1.2.1)
121
+ guard-minitest (2.4.6)
122
+ guard-compat (~> 1.2)
123
+ minitest (>= 3.0)
124
+ i18n (1.14.5)
125
+ concurrent-ruby (~> 1.0)
126
+ io-console (0.8.2)
127
+ json (2.7.2)
128
+ language_server-protocol (3.17.0.3)
129
+ lint_roller (1.1.0)
130
+ listen (3.9.0)
131
+ rb-fsevent (~> 0.10, >= 0.10.3)
132
+ rb-inotify (~> 0.9, >= 0.9.10)
133
+ logger (1.7.0)
134
+ loofah (2.22.0)
135
+ crass (~> 1.0.2)
136
+ nokogiri (>= 1.12.0)
137
+ lumberjack (1.2.10)
138
+ mail (2.8.1)
139
+ mini_mime (>= 0.1.1)
140
+ net-imap
141
+ net-pop
142
+ net-smtp
143
+ marcel (1.0.4)
144
+ method_source (1.1.0)
145
+ mini_mime (1.1.5)
146
+ mini_portile2 (2.8.9)
147
+ minitest (5.27.0)
148
+ mutex_m (0.2.0)
149
+ nenv (0.3.0)
150
+ net-imap (0.6.4.1)
151
+ date
152
+ net-protocol
153
+ net-pop (0.1.2)
154
+ net-protocol
155
+ net-protocol (0.2.2)
156
+ timeout
157
+ net-smtp (0.5.1)
158
+ net-protocol
159
+ nio4r (2.7.3)
160
+ nokogiri (1.19.4)
161
+ mini_portile2 (~> 2.8.2)
162
+ racc (~> 1.4)
163
+ nokogiri (1.19.4-aarch64-linux-gnu)
164
+ racc (~> 1.4)
165
+ nokogiri (1.19.4-aarch64-linux-musl)
166
+ racc (~> 1.4)
167
+ nokogiri (1.19.4-arm-linux-gnu)
168
+ racc (~> 1.4)
169
+ nokogiri (1.19.4-arm-linux-musl)
170
+ racc (~> 1.4)
171
+ nokogiri (1.19.4-arm64-darwin)
172
+ racc (~> 1.4)
173
+ nokogiri (1.19.4-x86_64-darwin)
174
+ racc (~> 1.4)
175
+ nokogiri (1.19.4-x86_64-linux-gnu)
176
+ racc (~> 1.4)
177
+ nokogiri (1.19.4-x86_64-linux-musl)
178
+ racc (~> 1.4)
179
+ notiffany (0.1.3)
180
+ nenv (~> 0.1)
181
+ shellany (~> 0.0)
182
+ ostruct (0.6.3)
183
+ parallel (1.28.0)
184
+ parser (3.3.11.1)
185
+ ast (~> 2.4.1)
186
+ racc
187
+ prism (1.9.0)
188
+ pry (0.16.0)
189
+ coderay (~> 1.1)
190
+ method_source (~> 1.0)
191
+ reline (>= 0.6.0)
192
+ pry-byebug (3.12.0)
193
+ byebug (~> 13.0)
194
+ pry (>= 0.13, < 0.17)
195
+ racc (1.8.1)
196
+ rack (2.2.9)
197
+ rack-test (2.1.0)
198
+ rack (>= 1.3)
199
+ rails (7.0.8.4)
200
+ actioncable (= 7.0.8.4)
201
+ actionmailbox (= 7.0.8.4)
202
+ actionmailer (= 7.0.8.4)
203
+ actionpack (= 7.0.8.4)
204
+ actiontext (= 7.0.8.4)
205
+ actionview (= 7.0.8.4)
206
+ activejob (= 7.0.8.4)
207
+ activemodel (= 7.0.8.4)
208
+ activerecord (= 7.0.8.4)
209
+ activestorage (= 7.0.8.4)
210
+ activesupport (= 7.0.8.4)
211
+ bundler (>= 1.15.0)
212
+ railties (= 7.0.8.4)
213
+ rails-dom-testing (2.2.0)
214
+ activesupport (>= 5.0.0)
215
+ minitest
216
+ nokogiri (>= 1.6)
217
+ rails-html-sanitizer (1.6.0)
218
+ loofah (~> 2.21)
219
+ nokogiri (~> 1.14)
220
+ railties (7.0.8.4)
221
+ actionpack (= 7.0.8.4)
222
+ activesupport (= 7.0.8.4)
223
+ method_source
224
+ rake (>= 12.2)
225
+ thor (~> 1.0)
226
+ zeitwerk (~> 2.5)
227
+ rainbow (3.1.1)
228
+ rake (13.2.1)
229
+ rb-fsevent (0.11.2)
230
+ rb-inotify (0.11.1)
231
+ ffi (~> 1.0)
232
+ regexp_parser (2.12.0)
233
+ reline (0.6.3)
234
+ io-console (~> 0.5)
235
+ rubocop (1.87.0)
236
+ json (~> 2.3)
237
+ language_server-protocol (~> 3.17.0.2)
238
+ lint_roller (~> 1.1.0)
239
+ parallel (>= 1.10)
240
+ parser (>= 3.3.0.2)
241
+ rainbow (>= 2.2.2, < 4.0)
242
+ regexp_parser (>= 2.9.3, < 3.0)
243
+ rubocop-ast (>= 1.49.0, < 2.0)
244
+ ruby-progressbar (~> 1.7)
245
+ unicode-display_width (>= 2.4.0, < 4.0)
246
+ rubocop-ast (1.49.1)
247
+ parser (>= 3.3.7.2)
248
+ prism (~> 1.7)
249
+ rubocop-performance (1.26.1)
250
+ lint_roller (~> 1.1)
251
+ rubocop (>= 1.75.0, < 2.0)
252
+ rubocop-ast (>= 1.47.1, < 2.0)
253
+ ruby-progressbar (1.13.0)
254
+ shellany (0.0.1)
255
+ simplecov (0.22.0)
256
+ docile (~> 1.1)
257
+ simplecov-html (~> 0.11)
258
+ simplecov_json_formatter (~> 0.1)
259
+ simplecov-html (0.12.3)
260
+ simplecov_json_formatter (0.1.4)
261
+ sprockets (3.7.3)
262
+ base64
263
+ concurrent-ruby (~> 1.0)
264
+ rack (> 1, < 3)
265
+ sprockets-rails (3.5.1)
266
+ actionpack (>= 6.1)
267
+ activesupport (>= 6.1)
268
+ sprockets (>= 3.0.0)
269
+ standard (1.55.0)
270
+ language_server-protocol (~> 3.17.0.2)
271
+ lint_roller (~> 1.0)
272
+ rubocop (~> 1.87.0)
273
+ standard-custom (~> 1.0.0)
274
+ standard-performance (~> 1.8)
275
+ standard-custom (1.0.2)
276
+ lint_roller (~> 1.0)
277
+ rubocop (~> 1.50)
278
+ standard-performance (1.9.0)
279
+ lint_roller (~> 1.1)
280
+ rubocop-performance (~> 1.26.0)
281
+ thor (1.3.1)
282
+ timeout (0.6.1)
283
+ tzinfo (2.0.6)
284
+ concurrent-ruby (~> 1.0)
285
+ unicode-display_width (2.5.0)
286
+ websocket-driver (0.7.6)
287
+ websocket-extensions (>= 0.1.0)
288
+ websocket-extensions (0.1.5)
289
+ zeitwerk (2.6.16)
290
+
291
+ PLATFORMS
292
+ aarch64-linux
293
+ aarch64-linux-gnu
294
+ aarch64-linux-musl
295
+ arm-linux
296
+ arm-linux-gnu
297
+ arm-linux-musl
298
+ arm64-darwin
299
+ x86-linux
300
+ x86-linux-gnu
301
+ x86-linux-musl
302
+ x86_64-darwin
303
+ x86_64-linux
304
+ x86_64-linux-gnu
305
+ x86_64-linux-musl
306
+
307
+ DEPENDENCIES
308
+ guard
309
+ guard-minitest
310
+ minitest (~> 5.0)
311
+ parallel (~> 1.27)
312
+ pry
313
+ pry-byebug
314
+ rack-test
315
+ rails (~> 7.0.0)
316
+ rake
317
+ serviceworker-rails!
318
+ simplecov
319
+ sprockets (~> 3.0)
320
+ sprockets-rails
321
+ standard
322
+
323
+ BUNDLED WITH
324
+ 2.5.16
@@ -0,0 +1,12 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 7.1.0"
4
+
5
+ group :development, :test do
6
+ gem "guard", require: false
7
+ gem "guard-minitest", require: false
8
+ gem "pry"
9
+ gem "pry-byebug", platforms: [:mri]
10
+ end
11
+
12
+ gemspec path: "../"