boring_generators 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -49
  3. data/Gemfile.lock +2 -2
  4. data/README.md +13 -0
  5. data/lib/boring_generators/generator_helper.rb +34 -0
  6. data/lib/boring_generators/version.rb +1 -1
  7. data/lib/generators/boring/active_storage/azure/install/install_generator.rb +1 -1
  8. data/lib/generators/boring/annotate/install/install_generator.rb +52 -0
  9. data/lib/generators/boring/audit/install/install_generator.rb +1 -1
  10. data/lib/generators/boring/avo/install/install_generator.rb +25 -0
  11. data/lib/generators/boring/cancancan/install/install_generator.rb +34 -0
  12. data/lib/generators/boring/devise/doorkeeper/install/install_generator.rb +190 -0
  13. data/lib/generators/boring/devise/install/install_generator.rb +11 -0
  14. data/lib/generators/boring/dotenv/install/install_generator.rb +51 -0
  15. data/lib/generators/boring/dotenv/install/templates/.env +3 -0
  16. data/lib/generators/boring/factory_bot/install/install_generator.rb +1 -1
  17. data/lib/generators/boring/faker/install/install_generator.rb +1 -1
  18. data/lib/generators/boring/favicon/build/build_generator.rb +1 -1
  19. data/lib/generators/boring/figjam/install/install_generator.rb +33 -0
  20. data/lib/generators/boring/honeybadger/install/install_generator.rb +47 -0
  21. data/lib/generators/boring/honeybadger/install/templates/README +6 -0
  22. data/lib/generators/boring/honeybadger/install/templates/honeybadger.yml.tt +26 -0
  23. data/lib/generators/boring/letter_opener/install/install_generator.rb +8 -9
  24. data/lib/generators/boring/oauth/google/install/install_generator.rb +2 -2
  25. data/lib/generators/boring/pronto/base_generator.rb +78 -0
  26. data/lib/generators/boring/pronto/github_action/install/install_generator.rb +27 -0
  27. data/lib/generators/boring/pronto/github_action/install/templates/pronto.yml.tt +53 -0
  28. data/lib/generators/boring/pronto/gitlab_ci/install/install_generator.rb +112 -0
  29. data/lib/generators/boring/pronto/gitlab_ci/install/templates/.gitlab-ci.yml.tt +22 -0
  30. data/lib/generators/boring/pronto/gitlab_ci/install/templates/README +7 -0
  31. data/lib/generators/boring/rack_mini_profiler/install/install_generator.rb +38 -0
  32. data/lib/generators/boring/rails_erd/install/install_generator.rb +35 -0
  33. data/lib/generators/boring/rspec/install/install_generator.rb +1 -1
  34. data/lib/generators/boring/sentry/install/install_generator.rb +48 -0
  35. data/lib/generators/boring/sentry/install/templates/sentry.rb +7 -0
  36. data/lib/generators/boring/vcr/install/install_generator.rb +125 -0
  37. data/lib/generators/boring/vcr/install/templates/rspec/vcr.rb.tt +8 -0
  38. data/lib/generators/boring/webmock/install/install_generator.rb +6 -5
  39. metadata +25 -2
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'boring_generators/generator_helper'
4
+
5
+ module Boring
6
+ module Vcr
7
+ class InstallGenerator < Rails::Generators::Base
8
+ include BoringGenerators::GeneratorHelper
9
+
10
+ desc "Adds VCR to the application"
11
+ source_root File.expand_path("templates", __dir__)
12
+
13
+ class_option :testing_framework,
14
+ type: :string,
15
+ alias: "-tf",
16
+ default: "minitest",
17
+ enum: %w[rspec minitest],
18
+ desc:
19
+ "Tell us which test framework you are using. Defaults to minitest"
20
+
21
+ class_option :stubbing_libraries,
22
+ type: :array,
23
+ alias: "-sl",
24
+ default: ["webmock"],
25
+ enum: %w[webmock typhoeus faraday excon],
26
+ desc:
27
+ "Tell us stubbing library you want to use separated by space. Defaults to webmock"
28
+
29
+ def verify_presence_of_test_helper
30
+ return if rspec? || (minitest? && File.exist?("test/test_helper.rb"))
31
+
32
+ say "We couldn't find test/test_helper.rb. Please configure Minitest and rerun the generator.",
33
+ :red
34
+
35
+ abort
36
+ end
37
+
38
+ def verify_presence_of_rails_helper
39
+ return if minitest? || (rspec? && File.exist?("spec/rails_helper.rb"))
40
+
41
+ say "We couldn't find spec/rails_helper.rb. Please configure RSpec and rerun the generator. Consider running `rails generate boring:rspec:install` to set up RSpec.",
42
+ :red
43
+
44
+ abort
45
+ end
46
+
47
+ def add_vcr_gem
48
+ say "Adding VCR gems to Gemfile", :green
49
+
50
+ check_and_install_gem "vcr", group: :test
51
+ end
52
+
53
+ def add_stubbing_library_gems
54
+ say "Adding stubbing library gems to Gemfile", :green
55
+
56
+ options[:stubbing_libraries].uniq.each do |stubbing_library|
57
+ check_and_install_gem stubbing_library, group: :test
58
+ end
59
+ end
60
+
61
+ def setup_vcr_for_rspec
62
+ return unless rspec?
63
+
64
+ say "Setting up VCR for RSpec", :green
65
+
66
+ @stubbing_libraries = format_stubbing_libraries
67
+
68
+ template("rspec/vcr.rb", "spec/support/vcr.rb")
69
+
70
+ unless all_support_files_are_required?
71
+ inject_into_file "spec/rails_helper.rb",
72
+ "require 'support/vcr'\n\n",
73
+ before: /\A/
74
+ end
75
+ end
76
+
77
+ def setup_vcr_for_minitest
78
+ return unless minitest?
79
+
80
+ say "Setting up VCR for Minitest", :green
81
+
82
+ vcr_config = <<~RUBY
83
+ require "vcr"
84
+
85
+ VCR.configure do |c|
86
+ c.cassette_library_dir = "test/vcr"
87
+ c.hook_into #{format_stubbing_libraries}
88
+ c.ignore_localhost = true
89
+ end
90
+ RUBY
91
+
92
+ inject_into_file "test/test_helper.rb", vcr_config, end: /^end\s*\Z/m
93
+ end
94
+
95
+ private
96
+
97
+ def format_stubbing_libraries
98
+ options[:stubbing_libraries]
99
+ .map { |stubbing_library| ":#{stubbing_library}" }
100
+ .join(", ")
101
+ end
102
+
103
+ def rspec?
104
+ options[:testing_framework].to_s == "rspec"
105
+ end
106
+
107
+ def minitest?
108
+ options[:testing_framework].to_s == "minitest"
109
+ end
110
+
111
+ def all_support_files_are_required?
112
+ line_to_check =
113
+ "Rails.root.glob('spec/support/**/*.rb').sort.each { |f| require f }"
114
+ rails_file_content_array = File.readlines("spec/rails_helper.rb")
115
+ rails_file_content_array.any? do |line|
116
+ line !~ /^\s*#/ &&
117
+ (
118
+ line.include?(line_to_check) ||
119
+ line.include?(line_to_check.gsub("'", '"'))
120
+ )
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,8 @@
1
+ require "vcr"
2
+
3
+ VCR.configure do |c|
4
+ c.cassette_library_dir = "spec/cassettes"
5
+ c.hook_into <%= @stubbing_libraries %>
6
+ c.configure_rspec_metadata!
7
+ c.ignore_localhost = true
8
+ end
@@ -1,7 +1,12 @@
1
1
  # frozen_string_literal: true
2
+
3
+ require 'boring_generators/generator_helper'
4
+
2
5
  module Boring
3
6
  module Webmock
4
7
  class InstallGenerator < Rails::Generators::Base
8
+ include BoringGenerators::GeneratorHelper
9
+
5
10
  desc "Adds webmock gem to the application"
6
11
 
7
12
  SUPPORTED_TEST_FRAMEWORKS = %w[rspec minitest]
@@ -29,11 +34,7 @@ module Boring
29
34
  def add_webmock_gem
30
35
  say "Adding webmock gem", :green
31
36
 
32
- gem "webmock"
33
-
34
- Bundler.with_unbundled_env do
35
- run "bundle install"
36
- end
37
+ check_and_install_gem "webmock", group: :test
37
38
  end
38
39
 
39
40
  def configure_webmock
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boring_generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abhay Nikam
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-29 00:00:00.000000000 Z
11
+ date: 2024-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -53,17 +53,21 @@ files:
53
53
  - exe/boring
54
54
  - lib/boring_generators.rb
55
55
  - lib/boring_generators/cli.rb
56
+ - lib/boring_generators/generator_helper.rb
56
57
  - lib/boring_generators/version.rb
57
58
  - lib/generators/boring/active_storage/aws/install/install_generator.rb
58
59
  - lib/generators/boring/active_storage/azure/install/install_generator.rb
59
60
  - lib/generators/boring/active_storage/google/install/install_generator.rb
60
61
  - lib/generators/boring/ahoy/install/install_generator.rb
61
62
  - lib/generators/boring/ahoy/install/templates/README
63
+ - lib/generators/boring/annotate/install/install_generator.rb
62
64
  - lib/generators/boring/audit/install/install_generator.rb
65
+ - lib/generators/boring/avo/install/install_generator.rb
63
66
  - lib/generators/boring/bootstrap/install/install_generator.rb
64
67
  - lib/generators/boring/bootstrap/install/templates/application.scss
65
68
  - lib/generators/boring/bullet/install/install_generator.rb
66
69
  - lib/generators/boring/bullet/install/templates/bullet.rb
70
+ - lib/generators/boring/cancancan/install/install_generator.rb
67
71
  - lib/generators/boring/ci/circleci/install/install_generator.rb
68
72
  - lib/generators/boring/ci/circleci/install/templates/config.psql.yml.tt
69
73
  - lib/generators/boring/ci/circleci/install/templates/config.sql.yml.tt
@@ -72,12 +76,16 @@ files:
72
76
  - lib/generators/boring/ci/github_action/install/templates/ci.yml.tt
73
77
  - lib/generators/boring/ci/travisci/install/install_generator.rb
74
78
  - lib/generators/boring/ci/travisci/install/templates/.travis.yml.tt
79
+ - lib/generators/boring/devise/doorkeeper/install/install_generator.rb
75
80
  - lib/generators/boring/devise/install/install_generator.rb
81
+ - lib/generators/boring/dotenv/install/install_generator.rb
82
+ - lib/generators/boring/dotenv/install/templates/.env
76
83
  - lib/generators/boring/factory_bot/install/install_generator.rb
77
84
  - lib/generators/boring/factory_bot/install/templates/users.rb
78
85
  - lib/generators/boring/faker/install/install_generator.rb
79
86
  - lib/generators/boring/favicon/build/build_generator.rb
80
87
  - lib/generators/boring/favicon/build/templates/favicon.html.erb.tt
88
+ - lib/generators/boring/figjam/install/install_generator.rb
81
89
  - lib/generators/boring/flipper/install/install_generator.rb
82
90
  - lib/generators/boring/flipper/install/templates/initializer.rb.tt
83
91
  - lib/generators/boring/font_awesome/ruby_gem/install/install_generator.rb
@@ -86,6 +94,9 @@ files:
86
94
  - lib/generators/boring/graphql/install/install_generator.rb
87
95
  - lib/generators/boring/graphql/install/templates/base_resolver.rb
88
96
  - lib/generators/boring/graphql/install/templates/hello_world_resolver.rb
97
+ - lib/generators/boring/honeybadger/install/install_generator.rb
98
+ - lib/generators/boring/honeybadger/install/templates/README
99
+ - lib/generators/boring/honeybadger/install/templates/honeybadger.yml.tt
89
100
  - lib/generators/boring/jquery/install/install_generator.rb
90
101
  - lib/generators/boring/letter_opener/install/install_generator.rb
91
102
  - lib/generators/boring/oauth/base_generator.rb
@@ -111,15 +122,25 @@ files:
111
122
  - lib/generators/boring/payments/stripe/install/templates/stripe.rb
112
123
  - lib/generators/boring/payments/stripe/install/templates/views/stripe/checkouts/create.js.erb
113
124
  - lib/generators/boring/payments/stripe/install/templates/views/stripe/checkouts/show.html.erb
125
+ - lib/generators/boring/pronto/base_generator.rb
126
+ - lib/generators/boring/pronto/github_action/install/install_generator.rb
127
+ - lib/generators/boring/pronto/github_action/install/templates/pronto.yml.tt
128
+ - lib/generators/boring/pronto/gitlab_ci/install/install_generator.rb
129
+ - lib/generators/boring/pronto/gitlab_ci/install/templates/.gitlab-ci.yml.tt
130
+ - lib/generators/boring/pronto/gitlab_ci/install/templates/README
114
131
  - lib/generators/boring/pry/install/install_generator.rb
115
132
  - lib/generators/boring/pry/install/templates/pryrc
116
133
  - lib/generators/boring/pundit/install/install_generator.rb
134
+ - lib/generators/boring/rack_mini_profiler/install/install_generator.rb
117
135
  - lib/generators/boring/rails_admin/install/install_generator.rb
136
+ - lib/generators/boring/rails_erd/install/install_generator.rb
118
137
  - lib/generators/boring/rspec/install/install_generator.rb
119
138
  - lib/generators/boring/rswag/install/install_generator.rb
120
139
  - lib/generators/boring/rswag/install/templates/README
121
140
  - lib/generators/boring/rubocop/install/install_generator.rb
122
141
  - lib/generators/boring/rubocop/install/templates/.rubocop.yml.tt
142
+ - lib/generators/boring/sentry/install/install_generator.rb
143
+ - lib/generators/boring/sentry/install/templates/sentry.rb
123
144
  - lib/generators/boring/simple_form/install/install_generator.rb
124
145
  - lib/generators/boring/stimulus/install/install_generator.rb
125
146
  - lib/generators/boring/tailwind/install/install_generator.rb
@@ -128,6 +149,8 @@ files:
128
149
  - lib/generators/boring/twilio/install/install_generator.rb
129
150
  - lib/generators/boring/twilio/install/templates/README
130
151
  - lib/generators/boring/twilio/install/templates/twilio.rb
152
+ - lib/generators/boring/vcr/install/install_generator.rb
153
+ - lib/generators/boring/vcr/install/templates/rspec/vcr.rb.tt
131
154
  - lib/generators/boring/webmock/install/install_generator.rb
132
155
  - lib/generators/boring/whenever/install/install_generator.rb
133
156
  - tmp/templates/app_template/.ruby-version