nextgen 0.13.0 → 0.15.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 +4 -4
- data/README.md +1 -1
- data/exe/nextgen +1 -0
- data/lib/nextgen/actions/bundler.rb +5 -3
- data/lib/nextgen/actions/git.rb +2 -0
- data/lib/nextgen/actions/yarn.rb +3 -1
- data/lib/nextgen/actions.rb +6 -4
- data/lib/nextgen/cli.rb +2 -0
- data/lib/nextgen/commands/create.rb +3 -1
- data/lib/nextgen/ext/prompt/list.rb +2 -0
- data/lib/nextgen/ext/prompt/multilist.rb +2 -0
- data/lib/nextgen/generators/action_mailer.rb +2 -0
- data/lib/nextgen/generators/annotate.rb +2 -0
- data/lib/nextgen/generators/base.rb +4 -0
- data/lib/nextgen/generators/basic_auth.rb +2 -0
- data/lib/nextgen/generators/brakeman.rb +2 -0
- data/lib/nextgen/generators/bundler_audit.rb +2 -0
- data/lib/nextgen/generators/capybara_lockstep.rb +9 -1
- data/lib/nextgen/generators/clean_gemfile.rb +2 -0
- data/lib/nextgen/generators/dotenv.rb +2 -0
- data/lib/nextgen/generators/erb_lint.rb +2 -0
- data/lib/nextgen/generators/eslint.rb +2 -0
- data/lib/nextgen/generators/factory_bot_rails.rb +2 -0
- data/lib/nextgen/generators/git_safe.rb +2 -0
- data/lib/nextgen/generators/github_actions.rb +2 -0
- data/lib/nextgen/generators/github_pr_template.rb +2 -0
- data/lib/nextgen/generators/good_migrations.rb +2 -0
- data/lib/nextgen/generators/home_controller.rb +2 -0
- data/lib/nextgen/generators/initial_git_commit.rb +2 -0
- data/lib/nextgen/generators/letter_opener.rb +2 -0
- data/lib/nextgen/generators/node.rb +2 -0
- data/lib/nextgen/generators/open_browser_on_start.rb +2 -0
- data/lib/nextgen/generators/overcommit.rb +2 -0
- data/lib/nextgen/generators/pgcli_rails.rb +2 -0
- data/lib/nextgen/generators/rack_canonical_host.rb +2 -0
- data/lib/nextgen/generators/rack_mini_profiler.rb +2 -0
- data/lib/nextgen/generators/rspec_rails.rb +2 -0
- data/lib/nextgen/generators/rspec_system_testing.rb +3 -1
- data/lib/nextgen/generators/rubocop.rb +2 -0
- data/lib/nextgen/generators/shoulda.rb +2 -0
- data/lib/nextgen/generators/sidekiq.rb +2 -0
- data/lib/nextgen/generators/staging.rb +2 -0
- data/lib/nextgen/generators/stylelint.rb +2 -0
- data/lib/nextgen/generators/thor.rb +2 -0
- data/lib/nextgen/generators/tomo.rb +2 -0
- data/lib/nextgen/generators/vcr.rb +2 -0
- data/lib/nextgen/generators/vite.rb +3 -1
- data/lib/nextgen/generators.rb +3 -1
- data/lib/nextgen/rails.rb +4 -2
- data/lib/nextgen/rails_options.rb +2 -0
- data/lib/nextgen/thor_extensions.rb +3 -1
- data/lib/nextgen/tidy_gemfile.rb +5 -3
- data/lib/nextgen/version.rb +3 -1
- data/lib/nextgen.rb +2 -0
- data/template/.erb-lint.yml.tt +2 -0
- data/template/.rubocop.yml.tt +0 -3
- data/template/Thorfile +2 -0
- data/template/app/controllers/concerns/basic_auth.rb +2 -0
- data/template/app/controllers/home_controller.rb +2 -0
- data/template/app/helpers/inline_svg_helper.rb +2 -0
- data/template/bin/setup +4 -3
- data/template/config/environments/staging.rb +2 -0
- data/template/config/initializers/generators.rb +2 -0
- data/template/config/initializers/rack_mini_profiler.rb +2 -0
- data/template/config/initializers/sidekiq.rb +2 -0
- data/template/lib/puma/plugin/open.rb +2 -0
- data/template/lib/tasks/auto_annotate_models.rake +2 -0
- data/template/lib/tasks/erblint.rake +2 -0
- data/template/lib/tasks/eslint.rake +2 -0
- data/template/lib/tasks/rubocop.rake +2 -0
- data/template/lib/tasks/stylelint.rake +2 -0
- data/template/lib/templates/rspec/system/system_spec.rb +2 -0
- data/template/lib/vite_inline_svg_file_loader.rb +2 -0
- data/template/spec/support/factory_bot.rb +2 -0
- data/template/spec/support/mailer.rb +2 -0
- data/template/spec/support/shoulda.rb +2 -0
- data/template/spec/support/system.rb +2 -0
- data/template/spec/support/webmock.rb +2 -0
- data/template/test/application_system_test_case.rb +2 -0
- data/template/test/helpers/inline_svg_helper_test.rb +2 -0
- data/template/test/support/capybara.rb.tt +15 -10
- data/template/test/support/factory_bot.rb +2 -0
- data/template/test/support/mailer.rb +2 -0
- data/template/test/support/shoulda.rb +2 -0
- data/template/test/support/vcr.rb.tt +2 -0
- data/template/test/support/webmock.rb +2 -0
- data/template/test/vite_helper.rb +2 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d8205ff3de045b2343981785aeba004a4730b708915c47e989ed2ddf566adfb5
|
|
4
|
+
data.tar.gz: ab88579fb4a7e827bd8464176368f27cfb3c595145d11279a0422bbc33a02b3f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bcecb49b31305607a4b0ad25e83625d2743f69b5e5a33a91d0daa778c60037cd61d2b708bfc856457774bc5958a46acec33a578f11d9a8b55438d168696fe152
|
|
7
|
+
data.tar.gz: 42bb4e8a64a011d3aa7d09fc1fb4160313c7c636bc6ade2ef2bfabe8e459561bc4654660a837a03867c2b18bbc1ff148fef47fee5be58649b9c746226aa0d0a1
|
data/README.md
CHANGED
|
@@ -28,7 +28,7 @@ Nextgen is an **interactive** and flexible alternative to `rails new` that inclu
|
|
|
28
28
|
|
|
29
29
|
Nextgen generates apps using **Rails 7.1**.
|
|
30
30
|
|
|
31
|
-
- **Ruby 3.
|
|
31
|
+
- **Ruby 3.1+** is required
|
|
32
32
|
- **Rubygems 3.4.8+** is required (run `gem update --system` to get it)
|
|
33
33
|
- **Node 18.12+ and Yarn** are required if you choose Vite or other Node-based options
|
|
34
34
|
- Additional tools may be required depending on the options you select (e.g. PostgreSQL)
|
data/exe/nextgen
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Nextgen
|
|
2
4
|
module Actions::Bundler
|
|
3
5
|
def binstubs(*gems)
|
|
@@ -13,7 +15,7 @@ module Nextgen
|
|
|
13
15
|
false
|
|
14
16
|
else
|
|
15
17
|
say_status :gemfile, [name, version].compact.join(", ")
|
|
16
|
-
gemfile.add(name, version
|
|
18
|
+
gemfile.add(name, version:, group:, require:)
|
|
17
19
|
true
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -21,7 +23,7 @@ module Nextgen
|
|
|
21
23
|
|
|
22
24
|
gemfile.save
|
|
23
25
|
cmd = "install"
|
|
24
|
-
cmd
|
|
26
|
+
cmd += " --quiet" if noisy_bundler_version?
|
|
25
27
|
bundle_command! cmd
|
|
26
28
|
end
|
|
27
29
|
alias install_gem install_gems
|
|
@@ -44,7 +46,7 @@ module Nextgen
|
|
|
44
46
|
|
|
45
47
|
Bundler.with_original_env do
|
|
46
48
|
say_status :bundle, cmd, :green if verbose
|
|
47
|
-
run! full_command, env: {"BUNDLE_IGNORE_MESSAGES" => "1"}, verbose: false, capture:
|
|
49
|
+
run! full_command, env: {"BUNDLE_IGNORE_MESSAGES" => "1"}, verbose: false, capture:
|
|
48
50
|
end
|
|
49
51
|
end
|
|
50
52
|
|
data/lib/nextgen/actions/git.rb
CHANGED
data/lib/nextgen/actions/yarn.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Nextgen
|
|
2
4
|
module Actions::Yarn
|
|
3
5
|
def add_yarn_packages(*packages, dev: false)
|
|
@@ -7,7 +9,7 @@ module Nextgen
|
|
|
7
9
|
alias add_yarn_package add_yarn_packages
|
|
8
10
|
|
|
9
11
|
def remove_yarn_packages(*packages, capture: false)
|
|
10
|
-
yarn_command "remove #{packages.map(&:shellescape).join(" ")}", capture:
|
|
12
|
+
yarn_command "remove #{packages.map(&:shellescape).join(" ")}", capture:
|
|
11
13
|
end
|
|
12
14
|
alias remove_yarn_package remove_yarn_packages
|
|
13
15
|
|
data/lib/nextgen/actions.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Nextgen
|
|
2
4
|
module Actions
|
|
3
5
|
include Bundler
|
|
@@ -22,7 +24,7 @@ module Nextgen
|
|
|
22
24
|
result, status = Open3.capture2e(env, cmd)
|
|
23
25
|
success = status.success?
|
|
24
26
|
else
|
|
25
|
-
result = success = run(cmd, env
|
|
27
|
+
result = success = run(cmd, env:, verbose:)
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
return result if success
|
|
@@ -82,9 +84,9 @@ module Nextgen
|
|
|
82
84
|
|
|
83
85
|
def document_deploy_var(var_name, desc = nil, required: false, default: nil)
|
|
84
86
|
insertion = "`#{var_name}`"
|
|
85
|
-
insertion
|
|
86
|
-
insertion
|
|
87
|
-
insertion
|
|
87
|
+
insertion += " **REQUIRED**" if required
|
|
88
|
+
insertion += " - #{desc}" if desc.present?
|
|
89
|
+
insertion += " (default: #{default})" unless default.nil?
|
|
88
90
|
|
|
89
91
|
copy_file "DEPLOYMENT.md" unless File.exist?("DEPLOYMENT.md")
|
|
90
92
|
inject_into_file "DEPLOYMENT.md", "#{insertion}\n- ", after: /^## Environment variables.*?^- /m
|
data/lib/nextgen/cli.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "active_support/core_ext/string/inflections"
|
|
2
4
|
require "fileutils"
|
|
3
5
|
require "forwardable"
|
|
@@ -242,7 +244,7 @@ module Nextgen
|
|
|
242
244
|
end
|
|
243
245
|
|
|
244
246
|
def ask_optional_enhancements
|
|
245
|
-
@generators = Generators.compatible_with(rails_opts:
|
|
247
|
+
@generators = Generators.compatible_with(rails_opts:)
|
|
246
248
|
|
|
247
249
|
answers = prompt.multi_select(
|
|
248
250
|
"Which optional enhancements would you like to add?",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
say_git "Add improved bin/setup script"
|
|
2
4
|
copy_file "bin/setup", mode: :preserve, force: true
|
|
3
5
|
|
|
@@ -29,6 +31,8 @@ if File.exist?("test/application_system_test_case.rb")
|
|
|
29
31
|
say_git "Configure system tests"
|
|
30
32
|
copy_test_support_file "capybara.rb.tt"
|
|
31
33
|
copy_file "test/application_system_test_case.rb", force: true
|
|
34
|
+
gsub_file "Gemfile", /gem "capybara"$/, '\0, require: false'
|
|
35
|
+
gsub_file "Gemfile", /gem "selenium-webdriver"$/, '\0, require: false'
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
if File.exist?(".ruby-version") && File.read(".ruby-version").match?(/\A\d+\.\d+.\d+.\s*\z/m)
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
install_gem "capybara-lockstep", group: :test, require: false
|
|
4
|
+
|
|
2
5
|
inject_into_file "app/views/layouts/application.html.erb",
|
|
3
6
|
"\n <%= capybara_lockstep if defined?(Capybara::Lockstep) %>",
|
|
4
7
|
after: /<head\b.*$/
|
|
8
|
+
|
|
9
|
+
capybara_path = rspec? ? "spec/support/capybara.rb" : "test/support/capybara.rb"
|
|
10
|
+
inject_into_file capybara_path,
|
|
11
|
+
"\n require \"capybara-lockstep\"",
|
|
12
|
+
after: /require "capybara".*$/
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
say_git "Install the vite_rails gem"
|
|
2
4
|
install_gem "vite_rails", version: "~> 3.0"
|
|
3
5
|
|
|
@@ -92,7 +94,7 @@ copy_file "test/helpers/inline_svg_helper_test.rb" if File.exist?("test/vite_hel
|
|
|
92
94
|
|
|
93
95
|
say_git "Add a `yarn start` script"
|
|
94
96
|
start = "concurrently -i -k --kill-others-on-fail -p none 'RUBY_DEBUG_OPEN=true bin/rails s' 'bin/vite dev'"
|
|
95
|
-
add_package_json_script
|
|
97
|
+
add_package_json_script(start:)
|
|
96
98
|
add_yarn_package "concurrently", dev: true
|
|
97
99
|
gsub_file "README.md", %r{bin/rails s(erver)?}, "yarn start"
|
|
98
100
|
gsub_file "bin/setup", %r{bin/rails s(erver)?}, "yarn start"
|
data/lib/nextgen/generators.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "yaml"
|
|
2
4
|
|
|
3
5
|
module Nextgen
|
|
@@ -40,7 +42,7 @@ module Nextgen
|
|
|
40
42
|
name = name.to_sym
|
|
41
43
|
raise ArgumentError, "Generator #{name.inspect} was already added" if generators.key?(name)
|
|
42
44
|
|
|
43
|
-
generators[name] = {node
|
|
45
|
+
generators[name] = {node:, prompt:, description:}
|
|
44
46
|
activate(name) unless prompt
|
|
45
47
|
end
|
|
46
48
|
|
data/lib/nextgen/rails.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "rails/version"
|
|
2
4
|
|
|
3
5
|
module Nextgen
|
|
@@ -29,10 +31,10 @@ module Nextgen
|
|
|
29
31
|
Thor::Base.shell.new.say_status(...)
|
|
30
32
|
end
|
|
31
33
|
|
|
32
|
-
def with_original_bundler_env(&
|
|
34
|
+
def with_original_bundler_env(&)
|
|
33
35
|
return yield unless defined?(Bundler)
|
|
34
36
|
|
|
35
|
-
Bundler.with_original_env(&
|
|
37
|
+
Bundler.with_original_env(&)
|
|
36
38
|
end
|
|
37
39
|
end
|
|
38
40
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Nextgen
|
|
2
4
|
module ThorExtensions
|
|
3
5
|
def self.extended(base)
|
|
@@ -23,7 +25,7 @@ module Nextgen
|
|
|
23
25
|
|
|
24
26
|
if given_args.first == "help"
|
|
25
27
|
retry_with_args = ["help"] if given_args.length > 1
|
|
26
|
-
elsif
|
|
28
|
+
elsif e.unknown.intersect?(%w[-h --help])
|
|
27
29
|
retry_with_args = ["help", (given_args - e.unknown).first]
|
|
28
30
|
end
|
|
29
31
|
raise unless retry_with_args.any?
|
data/lib/nextgen/tidy_gemfile.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Nextgen
|
|
2
4
|
class TidyGemfile
|
|
3
5
|
def self.clean!(path = "Gemfile")
|
|
@@ -27,7 +29,7 @@ module Nextgen
|
|
|
27
29
|
def add(gem, version: nil, group: nil, require: nil)
|
|
28
30
|
return false if include?(gem)
|
|
29
31
|
|
|
30
|
-
gem_line = build_gem_line(gem, version
|
|
32
|
+
gem_line = build_gem_line(gem, version:, require:, indent: group ? " " : "")
|
|
31
33
|
|
|
32
34
|
if group
|
|
33
35
|
group_line = create_group_if_needed(group)
|
|
@@ -62,8 +64,8 @@ module Nextgen
|
|
|
62
64
|
|
|
63
65
|
def build_gem_line(gem, version:, require:, indent:)
|
|
64
66
|
line = %(gem "#{gem}")
|
|
65
|
-
line
|
|
66
|
-
line
|
|
67
|
+
line += ", #{version.to_s.inspect}" if version
|
|
68
|
+
line += ", require: #{require.inspect}" unless require.nil?
|
|
67
69
|
|
|
68
70
|
indent + line + "\n"
|
|
69
71
|
end
|
data/lib/nextgen/version.rb
CHANGED
data/lib/nextgen.rb
CHANGED
data/template/.erb-lint.yml.tt
CHANGED
data/template/.rubocop.yml.tt
CHANGED
data/template/Thorfile
CHANGED
data/template/bin/setup
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
# This script is a way to set up or update your development environment automatically.
|
|
4
5
|
# This script is idempotent, so that you can run it at any time and get an expectable outcome.
|
|
@@ -27,7 +28,7 @@ def run(command, echo: true, silent: false, exception: true)
|
|
|
27
28
|
say_status(:run, command, :blue) if echo
|
|
28
29
|
with_original_bundler_env do
|
|
29
30
|
options = silent ? {out: File::NULL, err: File::NULL} : {}
|
|
30
|
-
system(command, exception
|
|
31
|
+
system(command, exception:, **options)
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -59,10 +60,10 @@ def git_safe_needed?
|
|
|
59
60
|
ENV["PATH"].include?(".git/safe/../../bin") && !Dir.exist?(".git/safe")
|
|
60
61
|
end
|
|
61
62
|
|
|
62
|
-
def with_original_bundler_env(&
|
|
63
|
+
def with_original_bundler_env(&)
|
|
63
64
|
return yield unless defined?(Bundler)
|
|
64
65
|
|
|
65
|
-
Bundler.with_original_env(&
|
|
66
|
+
Bundler.with_original_env(&)
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
def env(env_file, from:)
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
<% if rspec? -%>
|
|
3
|
-
require "capybara/rspec"
|
|
4
|
-
<% end -%>
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
ActiveSupport.on_load(:action_dispatch_system_test_case) do
|
|
4
|
+
require "capybara"
|
|
5
|
+
require "capybara/rails"
|
|
6
|
+
<% if rspec? -%>
|
|
7
|
+
require "capybara/rspec"
|
|
8
|
+
<% end -%>
|
|
9
|
+
|
|
10
|
+
Capybara.configure do |config|
|
|
11
|
+
config.default_max_wait_time = 2
|
|
12
|
+
config.save_path = "tmp/screenshots"
|
|
13
|
+
config.enable_aria_label = true
|
|
14
|
+
config.server = :puma, {Silent: true}
|
|
15
|
+
config.test_id = "data-testid"
|
|
16
|
+
end
|
|
12
17
|
end
|
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.
|
|
4
|
+
version: 0.15.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: 2024-
|
|
11
|
+
date: 2024-05-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: railties
|
|
@@ -215,14 +215,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
215
215
|
requirements:
|
|
216
216
|
- - ">="
|
|
217
217
|
- !ruby/object:Gem::Version
|
|
218
|
-
version: '3.
|
|
218
|
+
version: '3.1'
|
|
219
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
220
|
requirements:
|
|
221
221
|
- - ">="
|
|
222
222
|
- !ruby/object:Gem::Version
|
|
223
223
|
version: '0'
|
|
224
224
|
requirements: []
|
|
225
|
-
rubygems_version: 3.5.
|
|
225
|
+
rubygems_version: 3.5.10
|
|
226
226
|
signing_key:
|
|
227
227
|
specification_version: 4
|
|
228
228
|
summary: Generate your next Rails app interactively!
|