nextgen 0.1.0 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5b46f28e5dece5c8f9e57335f0bd0d1d6093011d26d0fb7349a5457a47ae84d
4
- data.tar.gz: 999357e7460f394bbb8131e70066064533b6235739104065bba22e2298d60646
3
+ metadata.gz: 1591abd0b5db745b385bf46cd2b7f3322e8e70fa498c227d856e390db9ae0841
4
+ data.tar.gz: 9d1ed374bda103b54f0c79aaf00a7ada704b3ce3e9c87a0037c0ab2e0d702668
5
5
  SHA512:
6
- metadata.gz: 5ceb53aceb86cb606641e8ef7c2e22678a968aa4fe45c1997673122e7f3c14cdda6ab6975d48df3b765ba300954664098fc3cc89f386fb7c1ab6f36aebb16790
7
- data.tar.gz: 9025c715d847630295d952c54c1827b89c012df9f7fc42b22c69ee2fc3708e836acb08f877eca821ed542cafab39b49ce16bc9dabc927b503d75f383cc02a5d7
6
+ metadata.gz: 8430143a55d838a9eeab4ab90a1fb115ec5f1fc3f6b7c0e8780e7bf35f9cdf06e2ba728f86df8a28f697b08b09701ab8b1a8b2b9256e6de17b4981226aef70d0
7
+ data.tar.gz: 8279239e32266c60ed81c39d69116e4cc9693a2faaed087b1fceb026dbb3e882f4efea4386d640c0ccbc4408981f1d0718e686f4b3473b6bc440ba718755277c
data/README.md CHANGED
@@ -22,7 +22,7 @@ Nextgen is an **interactive** and flexible alternative to `rails new` that inclu
22
22
  |
23
23
  [Contribution guide](#contribution-guide)
24
24
 
25
- TODO: screen recording goes here
25
+ ![Screen recording of Nextgen in action](./demo.gif)
26
26
 
27
27
  ## About
28
28
 
@@ -97,6 +97,7 @@ Nextgen can install and configure your choice of these recommended gems:
97
97
  - [sidekiq](https://github.com/sidekiq/sidekiq)
98
98
  - [thor](https://github.com/rails/thor)
99
99
  - [tomo](https://github.com/mattbrictson/tomo)
100
+ - [vcr](https://github.com/vcr/vcr)
100
101
 
101
102
  ### Node packages
102
103
 
@@ -3,10 +3,6 @@ initial_git_commit:
3
3
  base:
4
4
  description: "Enhance base Rails template with better docs, etc"
5
5
 
6
- initial_migrations:
7
- description: "Install and run initial migrations"
8
- requires: active_record
9
-
10
6
  clean_gemfile:
11
7
  description: "Clean up Gemfile"
12
8
 
@@ -133,6 +129,11 @@ tomo:
133
129
  prompt: "Tomo"
134
130
  description: "Install tomo gem for SSH-based deployment"
135
131
 
132
+ vcr:
133
+ prompt: "VCR"
134
+ description: "Install and configure vcr and webmock gems"
135
+ requires: test_framework
136
+
136
137
  rubocop:
137
138
  prompt: "RuboCop"
138
139
  description: "Install rubocop gems; apply formatting rules"
@@ -54,16 +54,18 @@ module Nextgen
54
54
  end
55
55
 
56
56
  def copy_test_support_file(file)
57
+ copy_action = file.end_with?(".tt") ? method(:template) : method(:copy_file)
58
+
57
59
  if minitest?
58
60
  create_test_support_directory
59
- copy_file "test/support/#{file}"
61
+ copy_action.call "test/support/#{file}"
60
62
  elsif rspec?
61
63
  empty_directory "spec/support"
62
64
  spec_file_path = "spec/support/#{file}"
63
65
  if Nextgen.template_path.join(spec_file_path).exist?
64
- copy_file spec_file_path
66
+ copy_action.call spec_file_path
65
67
  else
66
- copy_file "test/support/#{file}", spec_file_path
68
+ copy_action.call "test/support/#{file}", spec_file_path.sub(/\.tt$/, "")
67
69
  end
68
70
  end
69
71
  end
@@ -27,6 +27,7 @@ RUBY
27
27
 
28
28
  if File.exist?("test/application_system_test_case.rb")
29
29
  say_git "Configure system tests"
30
+ copy_test_support_file "capybara.rb.tt"
30
31
  copy_file "test/application_system_test_case.rb", force: true
31
32
  end
32
33
 
@@ -1,4 +1,5 @@
1
1
  install_gems "capybara", "selenium-webdriver", group: :test
2
+ copy_test_support_file "capybara.rb.tt"
2
3
  copy_test_support_file "system.rb"
3
4
 
4
5
  copy_file "lib/templates/rspec/system/system_spec.rb"
@@ -6,7 +6,8 @@ plugins << "factory_bot" if gemfile.match?(/^\s*gem ['"]factory_bot/)
6
6
  plugins << "minitest" if minitest?
7
7
  plugins << "performance"
8
8
  plugins << "rails"
9
- install_gems "rubocop", *plugins.map { "rubocop-#{_1}" }, group: :development, require: false
9
+ install_gem("rubocop-rails", version: ">= 2.22.0", group: :development, require: false)
10
+ install_gems(*plugins.map { "rubocop-#{_1}" }, "rubocop", group: :development, require: false)
10
11
  binstub "rubocop"
11
12
 
12
13
  say_git "Generate .rubocop.yml"
@@ -0,0 +1,3 @@
1
+ install_gems "vcr", "webmock", group: :test
2
+ copy_test_support_file "vcr.rb.tt"
3
+ copy_test_support_file "webmock.rb"
@@ -1,3 +1,3 @@
1
1
  module Nextgen
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
@@ -190,15 +190,6 @@ Rails/RootPathnameMethods:
190
190
  Rails/SkipsModelValidations:
191
191
  Enabled: false
192
192
 
193
- <% if Gem::Version.new(Rails.version) >= Gem::Version.new("7.1.0.beta1") -%>
194
- Rails/UnknownEnv:
195
- Environments:
196
- - development
197
- - test
198
- - production
199
- - local
200
- <% end -%>
201
-
202
193
  Rails/Validation:
203
194
  Enabled: false
204
195
 
@@ -1,9 +1,3 @@
1
- require "capybara/rails"
2
- require "capybara/rspec"
3
-
4
- Capybara.default_max_wait_time = 2
5
- Capybara.disable_animation = true
6
-
7
1
  RSpec.configure do |config|
8
2
  config.before(:each, type: :system) do
9
3
  driven_by :selenium,
@@ -0,0 +1 @@
1
+ require "webmock/rspec"
@@ -1,5 +1,4 @@
1
1
  require "test_helper"
2
- require "capybara/rails"
3
2
 
4
3
  class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
5
4
  driven_by :selenium,
@@ -9,10 +8,4 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
9
8
  options.add_argument("--disable-dev-shm-usage")
10
9
  options.add_argument("--no-sandbox")
11
10
  end
12
-
13
- setup do
14
- Capybara.default_max_wait_time = 2
15
- Capybara.disable_animation = true
16
- Capybara.server = :puma, {Silent: true}
17
- end
18
11
  end
@@ -0,0 +1,12 @@
1
+ require "capybara/rails"
2
+ <% if rspec? -%>
3
+ require "capybara/rspec"
4
+ <% end -%>
5
+
6
+ Capybara.configure do |config|
7
+ config.default_max_wait_time = 2
8
+ config.disable_animation = true
9
+ config.enable_aria_label = true
10
+ config.server = :puma, {Silent: true}
11
+ config.test_id = "data-testid"
12
+ end
@@ -0,0 +1,26 @@
1
+ require "vcr"
2
+
3
+ VCR.configure do |config|
4
+ config.hook_into :webmock
5
+ config.allow_http_connections_when_no_cassette = false
6
+ config.ignore_localhost = true
7
+ config.ignore_host "chromedriver.storage.googleapis.com"
8
+ config.cassette_library_dir = File.expand_path("../cassettes", __dir__)
9
+ <% if rspec? -%>
10
+ config.configure_rspec_metadata!
11
+ <% end -%>
12
+ config.default_cassette_options = {
13
+ # Enable automatic expiration and re-recording of cassettes
14
+ # re_record_interval: 1.week,
15
+ record: ENV["CI"] ? :none : :once,
16
+ record_on_error: false,
17
+ match_requests_on: %i[method uri body]
18
+ }
19
+
20
+ # Make sure headers containing secrets aren't recorded in cassettes and stored in git
21
+ %w[Authorization X-Api-Key].each do |sensitive_header|
22
+ config.filter_sensitive_data("[#{sensitive_header.upcase}]") do |interaction|
23
+ interaction.request.headers[sensitive_header]&.first
24
+ end
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ require "webmock/minitest"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nextgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-07 00:00:00.000000000 Z
11
+ date: 2023-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 7.1.0
19
+ version: 7.1.1
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: 7.1.0
26
+ version: 7.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,6 @@ files:
120
120
  - lib/nextgen/generators/good_migrations.rb
121
121
  - lib/nextgen/generators/home_controller.rb
122
122
  - lib/nextgen/generators/initial_git_commit.rb
123
- - lib/nextgen/generators/initial_migrations.rb
124
123
  - lib/nextgen/generators/letter_opener.rb
125
124
  - lib/nextgen/generators/node.rb
126
125
  - lib/nextgen/generators/open_browser_on_start.rb
@@ -136,6 +135,7 @@ files:
136
135
  - lib/nextgen/generators/stylelint.rb
137
136
  - lib/nextgen/generators/thor.rb
138
137
  - lib/nextgen/generators/tomo.rb
138
+ - lib/nextgen/generators/vcr.rb
139
139
  - lib/nextgen/generators/vite.rb
140
140
  - lib/nextgen/rails.rb
141
141
  - lib/nextgen/rails_options.rb
@@ -183,12 +183,16 @@ files:
183
183
  - template/spec/support/mailer.rb
184
184
  - template/spec/support/shoulda.rb
185
185
  - template/spec/support/system.rb
186
+ - template/spec/support/webmock.rb
186
187
  - template/test/application_system_test_case.rb
187
188
  - template/test/helpers/inline_svg_helper_test.rb
189
+ - template/test/support/capybara.rb.tt
188
190
  - template/test/support/factory_bot.rb
189
191
  - template/test/support/mailer.rb
190
192
  - template/test/support/shoulda.rb
193
+ - template/test/support/vcr.rb.tt
191
194
  - template/test/support/vite.rb
195
+ - template/test/support/webmock.rb
192
196
  homepage: https://github.com/mattbrictson/nextgen
193
197
  licenses:
194
198
  - MIT
@@ -213,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
217
  - !ruby/object:Gem::Version
214
218
  version: '0'
215
219
  requirements: []
216
- rubygems_version: 3.4.19
220
+ rubygems_version: 3.4.21
217
221
  signing_key:
218
222
  specification_version: 4
219
223
  summary: Generate your next Rails app interactively!
@@ -1,11 +0,0 @@
1
- migration_tasks = %w[
2
- action_mailbox:install:migrations
3
- action_text:install:migrations
4
- active_storage:install
5
- ]
6
- all_tasks = rails_command("-T", capture: true).scan(/^\S+\s+(\S+)/).flatten
7
- tasks_to_run = migration_tasks & all_tasks
8
- return unless tasks_to_run.any?
9
-
10
- tasks_to_run.each { |task| rails_command(task) }
11
- rails_command "db:migrate"