rolemodel-rails 2.1.0 → 2.3.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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -9
  3. data/Rakefile +3 -3
  4. data/lib/generators/rolemodel/all_generator.rb +1 -0
  5. data/lib/generators/rolemodel/core_setup/README.md +27 -0
  6. data/lib/generators/rolemodel/core_setup/USAGE +12 -0
  7. data/lib/generators/rolemodel/core_setup/core_setup_generator.rb +23 -0
  8. data/lib/generators/rolemodel/github/README.md +4 -0
  9. data/lib/generators/rolemodel/github/templates/workflows/deploy-production.yml +34 -0
  10. data/lib/generators/rolemodel/github/templates/workflows/deploy-staging.yml +35 -0
  11. data/lib/generators/rolemodel/good_job/good_job_generator.rb +7 -13
  12. data/lib/generators/rolemodel/heroku/README.md +20 -1
  13. data/lib/generators/rolemodel/heroku/heroku_generator.rb +20 -0
  14. data/lib/generators/rolemodel/heroku/templates/app.json.tt +5 -2
  15. data/lib/generators/rolemodel/heroku/templates/deploy-app/SKILL.md +202 -0
  16. data/lib/generators/rolemodel/linters/eslint/eslint_generator.rb +1 -0
  17. data/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb +5 -1
  18. data/lib/generators/rolemodel/lograge/README.md +1 -1
  19. data/lib/generators/rolemodel/lograge/templates/config/initializers/lograge.rb +1 -1
  20. data/lib/generators/rolemodel/optics/base/base_generator.rb +3 -2
  21. data/lib/generators/rolemodel/react/react_generator.rb +1 -0
  22. data/lib/generators/rolemodel/readme/templates/README.md.erb +2 -4
  23. data/lib/generators/rolemodel/saas/devise/devise_generator.rb +3 -3
  24. data/lib/generators/rolemodel/sentry/README.md +25 -0
  25. data/lib/generators/rolemodel/sentry/USAGE +13 -0
  26. data/lib/generators/rolemodel/sentry/sentry_generator.rb +114 -0
  27. data/lib/generators/rolemodel/sentry/templates/app/controllers/concerns/sentry_user.rb +13 -0
  28. data/lib/generators/rolemodel/sentry/templates/app/javascript/initializers/sentry.js +34 -0
  29. data/lib/generators/rolemodel/sentry/templates/config/initializers/sentry.rb +68 -0
  30. data/lib/generators/rolemodel/simple_form/README.md +6 -0
  31. data/lib/generators/rolemodel/simple_form/USAGE +3 -0
  32. data/lib/generators/rolemodel/simple_form/simple_form_generator.rb +11 -0
  33. data/lib/generators/rolemodel/simple_form/templates/app/inputs/switch_checkbox_input.rb +1 -1
  34. data/lib/generators/rolemodel/slim/templates/app/views/application/_head.html.slim.tt +0 -4
  35. data/lib/generators/rolemodel/tailored_select/USAGE +2 -1
  36. data/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb +15 -0
  37. data/lib/generators/rolemodel/testing/factory_bot/templates/support/factory_bot.rb +2 -0
  38. data/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb +2 -2
  39. data/lib/generators/rolemodel/testing/rspec/rspec_generator.rb +8 -10
  40. data/lib/generators/rolemodel/testing/rspec/templates/spec/rails_helper.rb.tt +4 -1
  41. data/lib/generators/rolemodel/testing/rspec/templates/spec/support/capybara_drivers.rb.tt +2 -0
  42. data/lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/action_cable_helper.rb +2 -0
  43. data/lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/test_element_helper.rb +2 -0
  44. data/lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers.rb.tt +3 -1
  45. data/lib/generators/rolemodel/testing/vitest/vitest_generator.rb +1 -0
  46. data/lib/generators/rolemodel/turbo/all/README.md +16 -0
  47. data/lib/generators/rolemodel/turbo/all/USAGE +5 -0
  48. data/lib/generators/rolemodel/turbo/all/all_generator.rb +15 -0
  49. data/lib/generators/rolemodel/turbo/confirm/README.md +25 -0
  50. data/lib/generators/rolemodel/turbo/confirm/USAGE +5 -0
  51. data/lib/generators/rolemodel/turbo/confirm/confirm_generator.rb +35 -0
  52. data/lib/generators/rolemodel/turbo/form/README.md +8 -0
  53. data/lib/generators/rolemodel/turbo/form/USAGE +5 -0
  54. data/lib/generators/rolemodel/turbo/form/form_generator.rb +29 -0
  55. data/lib/generators/rolemodel/turbo/form/templates/app/javascript/controllers/turbo_form_controller.js +15 -0
  56. data/lib/generators/rolemodel/turbo/form/templates/spec/support/helpers/turbo_form_helper.rb +8 -0
  57. data/lib/generators/rolemodel/{ui_components → turbo}/modals/README.md +0 -2
  58. data/lib/generators/rolemodel/turbo/modals/USAGE +5 -0
  59. data/lib/generators/rolemodel/{ui_components → turbo}/modals/modals_generator.rb +9 -22
  60. data/lib/generators/rolemodel/{ui_components → turbo}/modals/templates/app/helpers/turbo_frame_link_helper.rb +2 -0
  61. data/lib/generators/rolemodel/turbo/ready/README.md +12 -0
  62. data/lib/generators/rolemodel/turbo/ready/USAGE +5 -0
  63. data/lib/generators/rolemodel/turbo/ready/ready_generator.rb +48 -0
  64. data/lib/generators/rolemodel/turbo/ready/templates/app/javascript/controllers/prevent_morph_controller.js +22 -0
  65. data/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb +11 -14
  66. data/lib/generators/rolemodel/webpack/README.md +2 -1
  67. data/lib/generators/rolemodel/webpack/templates/postcss.config.cjs +0 -3
  68. data/lib/generators/rolemodel/webpack/templates/webpack.config.js +6 -14
  69. data/lib/generators/rolemodel/webpack/webpack_generator.rb +18 -18
  70. data/lib/rolemodel/generator_base.rb +15 -0
  71. data/lib/rolemodel/version.rb +1 -1
  72. data/lib/rolemodel/yarn.rb +42 -0
  73. data/lib/rolemodel-rails.rb +0 -1
  74. metadata +58 -28
  75. data/lib/generators/rolemodel/linters/rubocop/templates/lib/cops/form_error_response.rb +0 -54
  76. data/lib/generators/rolemodel/linters/rubocop/templates/lib/cops/no_chrome_tag.rb +0 -45
  77. data/lib/generators/rolemodel/semaphore/README.md +0 -15
  78. data/lib/generators/rolemodel/semaphore/USAGE +0 -11
  79. data/lib/generators/rolemodel/semaphore/semaphore_generator.rb +0 -25
  80. data/lib/generators/rolemodel/semaphore/templates/heroku-deployment-commands.sh +0 -3
  81. data/lib/generators/rolemodel/semaphore/templates/production-deploy.yml.erb +0 -17
  82. data/lib/generators/rolemodel/semaphore/templates/semaphore.yml.erb +0 -145
  83. data/lib/generators/rolemodel/semaphore/templates/staging-deploy.yml.erb +0 -17
  84. data/lib/generators/rolemodel/ui_components/modals/USAGE +0 -8
  85. data/lib/generators/rolemodel/ui_components/modals/templates/app/javascript/controllers/morph_controller.js +0 -23
  86. data/lib/generators/rolemodel/webpack/templates/app/assets/stylesheets/application.scss +0 -5
  87. data/lib/generators/rolemodel/webpack/templates/app/javascript/initializers/honeybadger.js +0 -26
  88. /data/lib/generators/rolemodel/{simple_form → tailored_select}/templates/app/inputs/tailored_select_input.rb +0 -0
  89. /data/lib/generators/rolemodel/{ui_components/modals/templates/app/javascript/initializers/turbo_confirm.js → turbo/confirm/templates/app/javascript/initializers/turbo_confirm.js.tt} +0 -0
  90. /data/lib/generators/rolemodel/{ui_components/modals/templates/app/views/application/_confirm.html.slim → turbo/confirm/templates/app/views/application/_confirm.html.slim.tt} +0 -0
  91. /data/lib/generators/rolemodel/{ui_components → turbo}/modals/templates/app/javascript/controllers/toggle_controller.js +0 -0
  92. /data/lib/generators/rolemodel/{ui_components → turbo}/modals/templates/app/javascript/initializers/frame_missing_handler.js +0 -0
  93. /data/lib/generators/rolemodel/{ui_components → turbo}/modals/templates/app/views/layouts/modal.html.slim.tt +0 -0
  94. /data/lib/generators/rolemodel/{ui_components → turbo}/modals/templates/app/views/layouts/panel.html.slim.tt +0 -0
  95. /data/lib/generators/rolemodel/{ui_components/modals → turbo/ready}/templates/app/javascript/initializers/before_morph_handler.js +0 -0
  96. /data/lib/generators/rolemodel/ui_components/navbar/templates/app/assets/stylesheets/components/shoelace/{index.scss → index.css} +0 -0
  97. /data/lib/generators/rolemodel/ui_components/navbar/templates/app/views/{layouts → application}/_navbar.html.slim +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolemodel-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RoleModel Software Inc
@@ -135,6 +135,20 @@ dependencies:
135
135
  - - ">="
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: rubocop-rails-omakase
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
138
152
  - !ruby/object:Gem::Dependency
139
153
  name: benchmark
140
154
  requirement: !ruby/object:Gem::Requirement
@@ -163,6 +177,9 @@ files:
163
177
  - lib/generators/rolemodel/README.md
164
178
  - lib/generators/rolemodel/USAGE
165
179
  - lib/generators/rolemodel/all_generator.rb
180
+ - lib/generators/rolemodel/core_setup/README.md
181
+ - lib/generators/rolemodel/core_setup/USAGE
182
+ - lib/generators/rolemodel/core_setup/core_setup_generator.rb
166
183
  - lib/generators/rolemodel/editors/README.md
167
184
  - lib/generators/rolemodel/editors/USAGE
168
185
  - lib/generators/rolemodel/editors/editors_generator.rb
@@ -175,6 +192,8 @@ files:
175
192
  - lib/generators/rolemodel/github/templates/instructions
176
193
  - lib/generators/rolemodel/github/templates/pull_request_template.md
177
194
  - lib/generators/rolemodel/github/templates/workflows/ci.yml.tt
195
+ - lib/generators/rolemodel/github/templates/workflows/deploy-production.yml
196
+ - lib/generators/rolemodel/github/templates/workflows/deploy-staging.yml
178
197
  - lib/generators/rolemodel/good_job/README.md
179
198
  - lib/generators/rolemodel/good_job/USAGE
180
199
  - lib/generators/rolemodel/good_job/good_job_generator.rb
@@ -185,6 +204,7 @@ files:
185
204
  - lib/generators/rolemodel/heroku/heroku_generator.rb
186
205
  - lib/generators/rolemodel/heroku/templates/Procfile
187
206
  - lib/generators/rolemodel/heroku/templates/app.json.tt
207
+ - lib/generators/rolemodel/heroku/templates/deploy-app/SKILL.md
188
208
  - lib/generators/rolemodel/kaminari/README.md
189
209
  - lib/generators/rolemodel/kaminari/USAGE
190
210
  - lib/generators/rolemodel/kaminari/kaminari_generator.rb
@@ -205,8 +225,6 @@ files:
205
225
  - lib/generators/rolemodel/linters/rubocop/README.md
206
226
  - lib/generators/rolemodel/linters/rubocop/USAGE
207
227
  - lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb
208
- - lib/generators/rolemodel/linters/rubocop/templates/lib/cops/form_error_response.rb
209
- - lib/generators/rolemodel/linters/rubocop/templates/lib/cops/no_chrome_tag.rb
210
228
  - lib/generators/rolemodel/lograge/README.md
211
229
  - lib/generators/rolemodel/lograge/USAGE
212
230
  - lib/generators/rolemodel/lograge/lograge_generator.rb
@@ -282,13 +300,12 @@ files:
282
300
  - lib/generators/rolemodel/saas/devise/templates/spec/models/user_spec.rb
283
301
  - lib/generators/rolemodel/saas/devise/templates/spec/support/devise.rb
284
302
  - lib/generators/rolemodel/saas/devise/templates/spec/system/users_spec.rb
285
- - lib/generators/rolemodel/semaphore/README.md
286
- - lib/generators/rolemodel/semaphore/USAGE
287
- - lib/generators/rolemodel/semaphore/semaphore_generator.rb
288
- - lib/generators/rolemodel/semaphore/templates/heroku-deployment-commands.sh
289
- - lib/generators/rolemodel/semaphore/templates/production-deploy.yml.erb
290
- - lib/generators/rolemodel/semaphore/templates/semaphore.yml.erb
291
- - lib/generators/rolemodel/semaphore/templates/staging-deploy.yml.erb
303
+ - lib/generators/rolemodel/sentry/README.md
304
+ - lib/generators/rolemodel/sentry/USAGE
305
+ - lib/generators/rolemodel/sentry/sentry_generator.rb
306
+ - lib/generators/rolemodel/sentry/templates/app/controllers/concerns/sentry_user.rb
307
+ - lib/generators/rolemodel/sentry/templates/app/javascript/initializers/sentry.js
308
+ - lib/generators/rolemodel/sentry/templates/config/initializers/sentry.rb
292
309
  - lib/generators/rolemodel/simple_form/README.md
293
310
  - lib/generators/rolemodel/simple_form/USAGE
294
311
  - lib/generators/rolemodel/simple_form/simple_form_generator.rb
@@ -297,7 +314,6 @@ files:
297
314
  - lib/generators/rolemodel/simple_form/templates/app/inputs/grouped_collection_select_input.rb
298
315
  - lib/generators/rolemodel/simple_form/templates/app/inputs/segmented_control_input.rb
299
316
  - lib/generators/rolemodel/simple_form/templates/app/inputs/switch_checkbox_input.rb
300
- - lib/generators/rolemodel/simple_form/templates/app/inputs/tailored_select_input.rb
301
317
  - lib/generators/rolemodel/simple_form/templates/config/initializers/simple_form.rb
302
318
  - lib/generators/rolemodel/simple_form/templates/config/locales/simple_form.en.yml
303
319
  - lib/generators/rolemodel/simple_form/templates/lib/templates/slim/scaffold/_form.html.slim.tt
@@ -324,6 +340,7 @@ files:
324
340
  - lib/generators/rolemodel/tailored_select/README.md
325
341
  - lib/generators/rolemodel/tailored_select/USAGE
326
342
  - lib/generators/rolemodel/tailored_select/tailored_select_generator.rb
343
+ - lib/generators/rolemodel/tailored_select/templates/app/inputs/tailored_select_input.rb
327
344
  - lib/generators/rolemodel/testing/README.md
328
345
  - lib/generators/rolemodel/testing/USAGE
329
346
  - lib/generators/rolemodel/testing/all_generator.rb
@@ -362,6 +379,32 @@ files:
362
379
  - lib/generators/rolemodel/testing/vitest/templates/spec/javascript/test-setup.js
363
380
  - lib/generators/rolemodel/testing/vitest/templates/vitest.config.js
364
381
  - lib/generators/rolemodel/testing/vitest/vitest_generator.rb
382
+ - lib/generators/rolemodel/turbo/all/README.md
383
+ - lib/generators/rolemodel/turbo/all/USAGE
384
+ - lib/generators/rolemodel/turbo/all/all_generator.rb
385
+ - lib/generators/rolemodel/turbo/confirm/README.md
386
+ - lib/generators/rolemodel/turbo/confirm/USAGE
387
+ - lib/generators/rolemodel/turbo/confirm/confirm_generator.rb
388
+ - lib/generators/rolemodel/turbo/confirm/templates/app/javascript/initializers/turbo_confirm.js.tt
389
+ - lib/generators/rolemodel/turbo/confirm/templates/app/views/application/_confirm.html.slim.tt
390
+ - lib/generators/rolemodel/turbo/form/README.md
391
+ - lib/generators/rolemodel/turbo/form/USAGE
392
+ - lib/generators/rolemodel/turbo/form/form_generator.rb
393
+ - lib/generators/rolemodel/turbo/form/templates/app/javascript/controllers/turbo_form_controller.js
394
+ - lib/generators/rolemodel/turbo/form/templates/spec/support/helpers/turbo_form_helper.rb
395
+ - lib/generators/rolemodel/turbo/modals/README.md
396
+ - lib/generators/rolemodel/turbo/modals/USAGE
397
+ - lib/generators/rolemodel/turbo/modals/modals_generator.rb
398
+ - lib/generators/rolemodel/turbo/modals/templates/app/helpers/turbo_frame_link_helper.rb
399
+ - lib/generators/rolemodel/turbo/modals/templates/app/javascript/controllers/toggle_controller.js
400
+ - lib/generators/rolemodel/turbo/modals/templates/app/javascript/initializers/frame_missing_handler.js
401
+ - lib/generators/rolemodel/turbo/modals/templates/app/views/layouts/modal.html.slim.tt
402
+ - lib/generators/rolemodel/turbo/modals/templates/app/views/layouts/panel.html.slim.tt
403
+ - lib/generators/rolemodel/turbo/ready/README.md
404
+ - lib/generators/rolemodel/turbo/ready/USAGE
405
+ - lib/generators/rolemodel/turbo/ready/ready_generator.rb
406
+ - lib/generators/rolemodel/turbo/ready/templates/app/javascript/controllers/prevent_morph_controller.js
407
+ - lib/generators/rolemodel/turbo/ready/templates/app/javascript/initializers/before_morph_handler.js
365
408
  - lib/generators/rolemodel/ui_components/README.md
366
409
  - lib/generators/rolemodel/ui_components/USAGE
367
410
  - lib/generators/rolemodel/ui_components/all_generator.rb
@@ -370,28 +413,14 @@ files:
370
413
  - lib/generators/rolemodel/ui_components/flash/flash_generator.rb
371
414
  - lib/generators/rolemodel/ui_components/flash/templates/app/views/application/_flash.html.slim
372
415
  - lib/generators/rolemodel/ui_components/flash/templates/spec/support/matchers/flash_matchers.rb
373
- - lib/generators/rolemodel/ui_components/modals/README.md
374
- - lib/generators/rolemodel/ui_components/modals/USAGE
375
- - lib/generators/rolemodel/ui_components/modals/modals_generator.rb
376
- - lib/generators/rolemodel/ui_components/modals/templates/app/helpers/turbo_frame_link_helper.rb
377
- - lib/generators/rolemodel/ui_components/modals/templates/app/javascript/controllers/morph_controller.js
378
- - lib/generators/rolemodel/ui_components/modals/templates/app/javascript/controllers/toggle_controller.js
379
- - lib/generators/rolemodel/ui_components/modals/templates/app/javascript/initializers/before_morph_handler.js
380
- - lib/generators/rolemodel/ui_components/modals/templates/app/javascript/initializers/frame_missing_handler.js
381
- - lib/generators/rolemodel/ui_components/modals/templates/app/javascript/initializers/turbo_confirm.js
382
- - lib/generators/rolemodel/ui_components/modals/templates/app/views/application/_confirm.html.slim
383
- - lib/generators/rolemodel/ui_components/modals/templates/app/views/layouts/modal.html.slim.tt
384
- - lib/generators/rolemodel/ui_components/modals/templates/app/views/layouts/panel.html.slim.tt
385
416
  - lib/generators/rolemodel/ui_components/navbar/README.md
386
417
  - lib/generators/rolemodel/ui_components/navbar/USAGE
387
418
  - lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb
388
- - lib/generators/rolemodel/ui_components/navbar/templates/app/assets/stylesheets/components/shoelace/index.scss
419
+ - lib/generators/rolemodel/ui_components/navbar/templates/app/assets/stylesheets/components/shoelace/index.css
389
420
  - lib/generators/rolemodel/ui_components/navbar/templates/app/javascript/lib/shoelace.js
390
- - lib/generators/rolemodel/ui_components/navbar/templates/app/views/layouts/_navbar.html.slim
421
+ - lib/generators/rolemodel/ui_components/navbar/templates/app/views/application/_navbar.html.slim
391
422
  - lib/generators/rolemodel/webpack/README.md
392
423
  - lib/generators/rolemodel/webpack/USAGE
393
- - lib/generators/rolemodel/webpack/templates/app/assets/stylesheets/application.scss
394
- - lib/generators/rolemodel/webpack/templates/app/javascript/initializers/honeybadger.js
395
424
  - lib/generators/rolemodel/webpack/templates/postcss.config.cjs
396
425
  - lib/generators/rolemodel/webpack/templates/webpack.config.js
397
426
  - lib/generators/rolemodel/webpack/webpack_generator.rb
@@ -410,6 +439,7 @@ files:
410
439
  - lib/rolemodel/utility.rb
411
440
  - lib/rolemodel/utility/task_tools.rb
412
441
  - lib/rolemodel/version.rb
442
+ - lib/rolemodel/yarn.rb
413
443
  homepage: https://github.com/RoleModel/rolemodel_rails
414
444
  licenses:
415
445
  - MIT
@@ -428,7 +458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
428
458
  - !ruby/object:Gem::Version
429
459
  version: '0'
430
460
  requirements: []
431
- rubygems_version: 4.0.6
461
+ rubygems_version: 4.0.3
432
462
  specification_version: 4
433
463
  summary: The RoleModel Way of building Rails apps.
434
464
  test_files: []
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cops
4
- # Custom Cop to Ensure Form Error Response Statuses
5
- #
6
- # There are three levels of matching here:
7
- # Methods (def on_if)
8
- # This scans code and only stops on the method specified.
9
- # E.G. `on_if` will only move into the below checks when it encounters an if statement.
10
- #
11
- # Node matcher (def_node_matcher :form_error)
12
- # This scans the block of code (in this case, the else branch of the if block)
13
- # using AST (Abstract Tree Syntax) to match certain patterns
14
- #
15
- # Regex
16
- # This checks the specific matching line to ensure it meets our expectations
17
- class FormErrorResponse < RuboCop::Cop::Base
18
- extend RuboCop::Cop::AutoCorrector
19
-
20
- def self.rack_version
21
- Gem.loaded_specs['rack'].version
22
- end
23
-
24
- def self.http_status
25
- if rack_version >= '3.1'
26
- :unprocessable_content
27
- else
28
- :unprocessable_entity
29
- end
30
- end
31
-
32
- # Match code in the else branch that either: is the only line and looks like `render :something, ...`
33
- # or is not the first line and looks like the same.
34
- def_node_matcher :form_error, <<~PATTERN
35
- {(... $(send nil? :render (:sym _) ...)) | $(send nil? :render (:sym _) ...)}
36
- PATTERN
37
-
38
- MSG = "Use status: :#{self.http_status} for invalid form requests."
39
-
40
- # Ensure the render is returning the correct status, otherwise add the offense
41
- STATUS_PAIR = /\(pair\s+\(sym :status\)\s+\(sym :#{self.http_status}\)\)/m
42
-
43
- # Only check within if blocks
44
- def on_if(node)
45
- form_error(node.else_branch) do |name|
46
- next if name.to_s.match?(STATUS_PAIR)
47
-
48
- add_offense(name) do |corrector|
49
- corrector.insert_after(name, ", status: :#{self.class.http_status}")
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubocop'
4
-
5
- module Cops
6
- # Detect occurences of the chrome tag in specs, and warn and remove them.
7
- class NoChromeTag < RuboCop::Cop::Base
8
- include RuboCop::Cop::RangeHelp
9
- extend RuboCop::Cop::AutoCorrector
10
-
11
- MSG = 'The :chrome tag is only for testing, and should not be checked into the repository.'
12
- RESTRICT_ON_SEND = %i[describe context it feature scenario].freeze
13
-
14
- def on_send(node) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
15
- node.arguments.each do |a|
16
- if a.sym_type? && a.value == :chrome
17
- range = range_with_surrounding_comma(a.source_range)
18
- add_offense(range) do |corrector|
19
- corrector.replace(range, '')
20
- end
21
- end
22
-
23
- next unless a.hash_type?
24
-
25
- a.pairs.each do |pair|
26
- next unless pair.key.value == :chrome
27
-
28
- range = range_with_surrounding_comma(pair.source_range)
29
- add_offense(range) do |corrector|
30
- corrector.replace(range, '')
31
- end
32
- end
33
- end
34
- end
35
-
36
- def range_with_surrounding_comma(source_range)
37
- buffer = source_range.source_buffer
38
- src = buffer.source
39
- end_pos = source_range.end_pos
40
- comma_index = src[...end_pos].rindex(/\s*,\s*/)
41
-
42
- Parser::Source::Range.new(buffer, comma_index, end_pos)
43
- end
44
- end
45
- end
@@ -1,15 +0,0 @@
1
- # Semaphore Generator
2
-
3
- ## What you get
4
-
5
- * semaphore.yml file to run the relevant CI commands
6
- * heroku-deployment-commands.sh file with commands to deploy to heroku
7
- * staging-deploy.yml file with commands to deploy to staging
8
- * production-deploy.yml file with commands to deploy to production
9
-
10
- This is the basic config needed to use semaphore.
11
-
12
- ## Note
13
- This config assumes
14
- - `main` is the base branch
15
- - `yarn test` is the command to run JS tests
@@ -1,11 +0,0 @@
1
- Description:
2
- Sets up our standard semaphore configuration
3
-
4
- Example:
5
- rails generate rolemodel:semaphore
6
-
7
- This will create:
8
- semaphore.yml
9
- heroku-deployment-commands.sh
10
- staging-deploy.yml
11
- production-deploy.yml
@@ -1,25 +0,0 @@
1
- module Rolemodel
2
- class SemaphoreGenerator < GeneratorBase
3
- source_root File.expand_path('templates', __dir__)
4
-
5
- def create_base_semaphore_config
6
- @project_name = Rails.application.class.try(:parent_name) || Rails.application.class.module_parent_name
7
- template 'semaphore.yml.erb', '.semaphore/semaphore.yml'
8
-
9
- if yes?('Does your project have JavaScript tests and/or eslint?')
10
- uncomment_lines('.semaphore/semaphore.yml', '- yarn test')
11
- uncomment_lines('.semaphore/semaphore.yml', '- yarn run eslint')
12
- end
13
- end
14
-
15
- def create_deplyment_commands
16
- default_heroku_prefix = (Rails.application.class.try(:parent_name) || Rails.application.class.module_parent_name).underscore.dasherize
17
-
18
- @heroku_prefix = ask('Enter the heroku project prefix', default: default_heroku_prefix)
19
-
20
- template 'heroku-deployment-commands.sh', '.semaphore/heroku-deployment-commands.sh'
21
- template 'staging-deploy.yml.erb', '.semaphore/staging-deploy.yml'
22
- template 'production-deploy.yml.erb', '.semaphore/production-deploy.yml'
23
- end
24
- end
25
- end
@@ -1,3 +0,0 @@
1
- checkout --use-cache
2
- heroku git:remote -a $HEROKU_APP_NAME
3
- git push heroku -f $SEMAPHORE_GIT_BRANCH:main
@@ -1,17 +0,0 @@
1
- version: v1.0
2
- name: Deploy to Production
3
- agent:
4
- machine:
5
- type: e1-standard-2
6
- os_image: ubuntu1804
7
- blocks:
8
- - name: Deploy
9
- task:
10
- secrets:
11
- - name: heroku_http_auth
12
- env_vars:
13
- - name: HEROKU_APP_NAME
14
- value: <%= "#{@heroku_prefix}-production" %>
15
- jobs:
16
- - name: 'Push code to Production'
17
- commands_file: heroku-deployment-commands.sh
@@ -1,145 +0,0 @@
1
- version: v1.0
2
- name: <%= @project_name %>
3
- agent:
4
- machine:
5
- type: e1-standard-2
6
- os_image: ubuntu2004
7
- auto_cancel:
8
- running:
9
- when: branch != 'main'
10
- global_job_config:
11
- env_vars:
12
- - name: RAILS_ENV
13
- value: test
14
- - name: HONEYBADGER_SOURCE_MAP_DISABLED
15
- value: 'true'
16
- - name: DATABASE_URL
17
- value: 'postgres://postgres:@0.0.0.0/<%= Rails.application.config.database_configuration['test']['database'] %>'
18
- - name: GOOGLE_CHROME_BIN
19
- value: 'google-chrome'
20
- # https://github.com/renderedtext/test-boosters#rspec-booster
21
- - name: TB_RSPEC_OPTIONS
22
- value: '--format RspecJunitFormatter --out tmp/test_results/rspec_junit.xml --format documentation'
23
- secrets:
24
- - name: rmsbackup_ssh_private_key
25
- prologue:
26
- commands:
27
- # Add keys
28
- - ssh-keyscan -H github.com >> ~/.ssh/known_hosts
29
- - chmod 600 ~/.ssh/id_rsa_rmsbackup_ssh_private_key
30
- - ssh-add ~/.ssh/id_rsa_rmsbackup_ssh_private_key
31
-
32
- - checkout
33
-
34
- # Ruby setup
35
- - sem-service start postgres 14
36
- - sem-version ruby $(cat .ruby-version)
37
- - gem install bundler --no-document
38
- - bundle config set deployment 'true'
39
- - bundle config set path 'vendor/bundle'
40
-
41
- # Node setup
42
- - sem-version node $(cat .node-version)
43
- - npm i -g yarn
44
-
45
- # Cache setup
46
- - cache restore gems-$(checksum .ruby-version)-$(checksum Gemfile.lock)
47
- - cache restore yarn-cache-$(checksum .node-version)-$(checksum yarn.lock)
48
- - cache restore yarn-node-modules-$(checksum .node-version)-$(checksum yarn.lock)
49
- blocks:
50
- - name: Build
51
- dependencies: []
52
- task:
53
- jobs:
54
- - name: Install Dependencies
55
- commands:
56
- - bundle check || bundle install
57
- - yarn check || yarn install
58
- epilogue:
59
- commands:
60
- - cache store gems-$(checksum .ruby-version)-$(checksum Gemfile.lock) vendor/bundle
61
- - cache store yarn-cache-$(checksum .node-version)-$(checksum yarn.lock) /home/semaphore/.cache/yarn
62
- - cache store yarn-node-modules-$(checksum .node-version)-$(checksum yarn.lock) node_modules
63
- - name: Ruby/JS/Linting
64
- execution_time_limit:
65
- minutes: 20
66
- dependencies:
67
- - Build
68
- task:
69
- jobs:
70
- - name: Ruby Test/JS Tests/Audit/Linting
71
- commands:
72
- - bundle exec rails db:setup db:test:prepare
73
- - bundle exec rspec --exclude-pattern "spec/system/**/*_spec.rb" --format RspecJunitFormatter --out tmp/test_results/rspec_junit.xml --format documentation
74
- - bundle exec bundle-audit update
75
- - bundle exec bundle-audit check
76
- # - bundle exec rubocop --fail-level warning --display-only-fail-level-offenses
77
- # - yarn test
78
- # - yarn run eslint
79
- epilogue:
80
- always:
81
- commands:
82
- - test-results publish tmp/test_results
83
- on_fail:
84
- commands:
85
- - artifact push job log/test.log
86
- - name: Assets Compile
87
- dependencies:
88
- - Build
89
- execution_time_limit:
90
- minutes: 20
91
- task:
92
- jobs:
93
- - name: Webpack Compile and Store Assets
94
- commands:
95
- - bundle check || bundle install --without legacy_data_migration
96
- - yarn check || yarn install
97
- - yarn build
98
- - cache store assets-public-$SEMAPHORE_WORKFLOW_ID public
99
- - name: System Tests
100
- dependencies:
101
- - Assets Compile
102
- execution_time_limit:
103
- minutes: 20
104
- task:
105
- agent:
106
- machine:
107
- type: e1-standard-2
108
- os_image: ubuntu2004
109
- env_vars:
110
- - name: TEST_BOOSTERS_RSPEC_TEST_FILE_PATTERN
111
- value: spec/system/**/*_spec.rb
112
- prologue:
113
- commands:
114
- - gem install semaphore_test_boosters
115
- - bundle exec rails db:setup db:test:prepare
116
- - cache restore assets-public-$SEMAPHORE_WORKFLOW_ID
117
- jobs:
118
- - name: Ruby System Tests
119
- parallelism: 2
120
- commands:
121
- - rspec_booster --job $SEMAPHORE_JOB_INDEX/$SEMAPHORE_JOB_COUNT
122
- epilogue:
123
- always:
124
- commands:
125
- - test-results publish tmp/test_results
126
- - cache delete assets-public-$SEMAPHORE_WORKFLOW_ID
127
- on_fail:
128
- commands:
129
- - artifact push job log/test.log
130
- - artifact push workflow tmp/capybara
131
- after_pipeline:
132
- task:
133
- jobs:
134
- - name: Publish Results
135
- commands:
136
- - test-results gen-pipeline-report
137
- promotions:
138
- - name: Deploy Staging
139
- pipeline_file: staging-deploy.yml
140
- auto_promote_on:
141
- - result: passed
142
- branch:
143
- - main
144
- - name: Deploy Production
145
- pipeline_file: production-deploy.yml
@@ -1,17 +0,0 @@
1
- version: v1.0
2
- name: Deploy to Staging
3
- agent:
4
- machine:
5
- type: e1-standard-2
6
- os_image: ubuntu1804
7
- blocks:
8
- - name: Deploy
9
- task:
10
- secrets:
11
- - name: heroku_http_auth
12
- env_vars:
13
- - name: HEROKU_APP_NAME
14
- value: <%= "#{@heroku_prefix}-staging" %>
15
- jobs:
16
- - name: 'Push code to staging'
17
- commands_file: heroku-deployment-commands.sh
@@ -1,8 +0,0 @@
1
- Description:
2
- Add Modal, Panel, and Confirmation components
3
-
4
- Example:
5
- bin/rails generate rolemodel:ui_components:modals
6
-
7
- Example including RoleModel Panel Integration:
8
- bin/rails generate rolemodel:ui_components:modals --panels
@@ -1,23 +0,0 @@
1
- import { Controller } from "@hotwired/stimulus"
2
-
3
- export default class extends Controller {
4
- static values = {
5
- attributeName: String
6
- }
7
-
8
- /**
9
- * Use this method in conjunction with the turbo:before-morph-attribute event to prevent morphing of a specific
10
- * attribute on an element. This is useful for attributes that may change due to user interaction, such as the "open"
11
- * attribute on a details element, which can be toggled by the user and should not be overridden by Turbo's morphing process.
12
- *
13
- * Example:
14
- * <details controller="morph" data-morph-attribute-name-value="open" data-action="turbo:before-morph-attribute->morph#skipMorphAttribute">
15
- *
16
- * @param {import("@hotwired/turbo").TurboBeforeMorphAttributeEvent} event
17
- */
18
- skipMorphAttribute(event) {
19
- if (event.detail.attributeName === this.attributeNameValue) {
20
- event.preventDefault()
21
- }
22
- }
23
- }
@@ -1,5 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.css, which will include
2
- // all the files listed below.
3
- //
4
- // For example:
5
- // @import 'components/modal';
@@ -1,26 +0,0 @@
1
- import Honeybadger from '@honeybadger-io/js'
2
-
3
- if (process.env.RAILS_ENV === 'production') {
4
- Honeybadger.configure({
5
- apiKey: process.env.HONEYBADGER_API_KEY,
6
- environment: process.env.HONEYBADGER_ENV,// ‘production’ or ‘review-app’ from app.json
7
- revision: process.env.SOURCE_VERSION // provided by heroku
8
- })
9
-
10
- const IGNORE_ERRORS = [
11
- /AbortError/,
12
- /UnhandledPromiseRejectionWarning: {}/,
13
- /UnhandledPromiseRejectionWarning.*Load failed/,
14
- /UnhandledPromiseRejectionWarning: Object Not Found Matching/,
15
- /UnhandledPromiseRejectionWarning.*Failed to fetch/,
16
- /ResizeObserver loop completed with undelivered notifications./,
17
- ]
18
-
19
- Honeybadger.beforeNotify((notice) => {
20
- for (const ignoreError of IGNORE_ERRORS) {
21
- if (ignoreError.test(notice.message)) {
22
- return false
23
- }
24
- }
25
- })
26
- }