hanami-cli 2.0.0.beta2 → 2.0.0.beta3

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/.rubocop.yml +2 -0
  3. data/CHANGELOG.md +17 -0
  4. data/Gemfile +0 -1
  5. data/hanami-cli.gemspec +1 -1
  6. data/lib/hanami/cli/commands/app/command.rb +4 -2
  7. data/lib/hanami/cli/commands/app/db/create.rb +1 -0
  8. data/lib/hanami/cli/commands/app/generate/action.rb +0 -3
  9. data/lib/hanami/cli/commands/app/routes.rb +1 -1
  10. data/lib/hanami/cli/commands/db/utils/database.rb +8 -1
  11. data/lib/hanami/cli/commands/db/utils/postgres.rb +5 -0
  12. data/lib/hanami/cli/commands.rb +2 -3
  13. data/lib/hanami/cli/generators/app/action/action.erb +2 -2
  14. data/lib/hanami/cli/generators/app/action/slice_action.erb +2 -2
  15. data/lib/hanami/cli/generators/app/action/template.html.erb +1 -1
  16. data/lib/hanami/cli/generators/app/action/view.erb +2 -2
  17. data/lib/hanami/cli/generators/app/action.rb +16 -10
  18. data/lib/hanami/cli/generators/app/action_context.rb +3 -3
  19. data/lib/hanami/cli/generators/app/slice/action.erb +2 -2
  20. data/lib/hanami/cli/generators/app/slice/entities.erb +1 -1
  21. data/lib/hanami/cli/generators/app/slice/repository.erb +2 -2
  22. data/lib/hanami/cli/generators/app/slice/slice.erb +1 -1
  23. data/lib/hanami/cli/generators/app/slice/view.erb +2 -2
  24. data/lib/hanami/cli/generators/app/slice.rb +3 -1
  25. data/lib/hanami/cli/generators/app/slice_context.rb +2 -2
  26. data/lib/hanami/cli/generators/context.rb +2 -2
  27. data/lib/hanami/cli/generators/gem/app/action.erb +1 -1
  28. data/lib/hanami/cli/generators/gem/app/app.erb +1 -1
  29. data/lib/hanami/cli/generators/gem/app/gemfile.erb +4 -0
  30. data/lib/hanami/cli/generators/gem/app/puma.erb +15 -0
  31. data/lib/hanami/cli/generators/gem/app/readme.erb +1 -1
  32. data/lib/hanami/cli/generators/gem/app/routes.erb +2 -4
  33. data/lib/hanami/cli/generators/gem/app/settings.erb +1 -1
  34. data/lib/hanami/cli/generators/gem/app/types.erb +1 -1
  35. data/lib/hanami/cli/generators/gem/app/validator.erb +1 -1
  36. data/lib/hanami/cli/generators/gem/app.rb +1 -0
  37. data/lib/hanami/cli/version.rb +1 -1
  38. data/lib/hanami/console/context.rb +3 -2
  39. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 511daafabba67025eb83dd27f06c62a9809ab89c8901445e5c00f15bbf8fd8ca
4
- data.tar.gz: 7d303b0c72fb47c2cf0ba107af0e6899d83b14b580565f4b30c43f4bc87ab4f9
3
+ metadata.gz: 2652fcd9f660db53b10864142c4a96a0acf3991330b5a5d1b3f0270b5dcbc8ff
4
+ data.tar.gz: 983957c43ad1d96d7e77db6924346a6021928229eca699d0aafc28c7fcc41cd8
5
5
  SHA512:
6
- metadata.gz: 716e634d4c572a09cd9954484d9dafc6affaafc13d03ec1e79703436b3efd305d1823dc4d35e92207b5388ebc33aef9f9ba603089cf73b3aec904957fe760bd6
7
- data.tar.gz: e7d545d1cd6bfabcc5b4305b755c319c06a4e688e74a4639765c8f0026aac6b039d3459d670014a096ebd726b4a3192f694e273285341698b52a02b0762ae4a4
6
+ metadata.gz: 9ad2064d1634dfae55848d8e318a7e6b4a0022c56e50b7ed83634e0bc29b5bcd18ba8a8adad14d764125e219827955cbbeef2dc8cc7b788da5543e7f263f5c56
7
+ data.tar.gz: e911ef639b84a76e24a7b30ed7d778a0f4deb43fee8bd406cc52d44188f1ddc0de16622db87f406f42f6551c8fccc67e8fbe9ae4c6b7b8947610df06dfd21d32
data/.rubocop.yml CHANGED
@@ -22,6 +22,8 @@ Style/BlockDelimiters:
22
22
  Enabled: false
23
23
  Style/CommentedKeyword:
24
24
  Enabled: false
25
+ Style/EmptyHeredoc:
26
+ Enabled: false
25
27
  Style/LambdaCall:
26
28
  Enabled: false
27
29
  Style/TrailingCommaInArguments:
data/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  Hanami Command Line Interface
4
4
 
5
+ ## v2.0.0.beta3 - 2022-09-21
6
+
7
+ ### Added
8
+
9
+ - [Luca Guidi] New applications to support Puma server out of the box. Add the `puma` gem to `Gemfile` and generate `config/puma.rb`.
10
+ - [Luca Guidi] New applications to support code reloading for `hanami server` via `hanami-reloader`. This gem is added to app's `Gemfile`.
11
+ - [Marc Busqué] Introduce code reloading for `hanami console` via `#reload` method to be invoked within the console context.
12
+
13
+ ### Fixed
14
+
15
+ - [Luca Guidi] Respect plural when generating code via `hanami new` and `hanami generate`. Example: `hanami new code_insights` => `CodeInsights` instead of `CodeInsight`
16
+ - [Luca Guidi] Ensure `hanami generate action` to not crash when invoked with non-RESTful action names. Example: `hanami generate action talent.apply`
17
+
18
+ ### Changed
19
+
20
+ - [Piotr Solnica] `hanami generate action` to add routes to `config/routes.rb` without the `define` block context. See https://github.com/hanami/hanami/pull/1208
21
+
5
22
  ## v2.0.0.beta2 - 2022-08-16
6
23
 
7
24
  ### Added
data/Gemfile CHANGED
@@ -8,7 +8,6 @@ unless ENV["CI"]
8
8
  gem "yard", require: false
9
9
  end
10
10
 
11
- gem "dry-files", require: false, github: "dry-rb/dry-files", branch: :main
12
11
  gem "hanami", require: false, github: "hanami/hanami", branch: :main
13
12
  gem "hanami-router", github: "hanami/router", branch: :main
14
13
 
data/hanami-cli.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "bundler", "~> 2.1"
34
34
  spec.add_dependency "rake", "~> 13.0"
35
35
  spec.add_dependency "dry-cli", "~> 0.7"
36
- spec.add_dependency "dry-files", "~> 0.2", ">= 0.2.0"
36
+ spec.add_dependency "dry-files", "~> 0.3", ">= 0.3.0"
37
37
  spec.add_dependency "dry-inflector", "~> 0.2"
38
38
 
39
39
  spec.add_development_dependency "rspec", "~> 3.9"
@@ -8,15 +8,17 @@ module Hanami
8
8
  module Commands
9
9
  module App
10
10
  class Command < Hanami::CLI::Command
11
+ ACTION_SEPARATOR = "."
12
+
11
13
  module Environment
12
- def call(**opts)
14
+ def call(*args, **opts)
13
15
  env = opts[:env]
14
16
 
15
17
  hanami_env = env ? env.to_s : ENV.fetch("HANAMI_ENV", "development")
16
18
 
17
19
  ENV["HANAMI_ENV"] = hanami_env
18
20
 
19
- super(**opts)
21
+ super(*args, **opts)
20
22
  end
21
23
  end
22
24
 
@@ -15,6 +15,7 @@ module Hanami
15
15
  out.puts "=> database #{database.name} created"
16
16
  else
17
17
  out.puts "=> failed to create database #{database.name}"
18
+ exit $?.exitstatus
18
19
  end
19
20
  end
20
21
  end
@@ -50,9 +50,6 @@ module Hanami
50
50
 
51
51
  private
52
52
 
53
- ACTION_SEPARATOR = "."
54
- private_constant :ACTION_SEPARATOR
55
-
56
53
  attr_reader :generator
57
54
  end
58
55
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "hanami"
4
- require "hanami/router/inspector"
5
4
 
6
5
  module Hanami
7
6
  module CLI
@@ -40,6 +39,7 @@ module Hanami
40
39
 
41
40
  # @api private
42
41
  def call(format: DEFAULT_FORMAT, **)
42
+ require "hanami/router/inspector"
43
43
  require "hanami/prepare"
44
44
  inspector = Hanami::Router::Inspector.new(formatter: resolve_formatter(format))
45
45
  app.router(inspector: inspector)
@@ -30,7 +30,14 @@ module Hanami
30
30
  }.freeze
31
31
 
32
32
  def self.[](app)
33
- config = DatabaseConfig.new(app.settings.database_url)
33
+ database_url =
34
+ if app.key?(:settings) && app[:settings].respond_to?(:database_url)
35
+ app[:settings].database_url
36
+ else
37
+ ENV.fetch("DATABASE_URL")
38
+ end
39
+
40
+ config = DatabaseConfig.new(database_url)
34
41
 
35
42
  resolver = SCHEME_MAP.fetch(config.db_type) do
36
43
  raise "#{config.db_type} is not a supported db scheme"
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "shellwords"
4
+ require "open3"
4
5
  require_relative "database"
5
6
 
6
7
  module Hanami
@@ -10,6 +11,10 @@ module Hanami
10
11
  module Utils
11
12
  class Postgres < Database
12
13
  def create_command
14
+ existing_stdout, status = Open3.capture2(cli_env_vars, "psql -t -c '\\l #{escaped_name}'")
15
+
16
+ return true if status.success? && existing_stdout.include?(escaped_name)
17
+
13
18
  system(cli_env_vars, "createdb #{escaped_name}")
14
19
  end
15
20
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami"
4
-
5
3
  module Hanami
6
4
  module CLI
7
5
  # Returns true if the CLI is being called from inside an Hanami app.
@@ -12,7 +10,8 @@ module Hanami
12
10
  # @api public
13
11
  # @since 2.0.0
14
12
  def self.within_hanami_app?
15
- !!Hanami.app_path
13
+ File.exist?("config/app.rb") ||
14
+ File.exist?("app.rb")
16
15
  end
17
16
 
18
17
  module Commands
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module <%= classified_app_name %>
3
+ module <%= camelized_app_name %>
4
4
  module Actions
5
5
  <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= classified_action_name %> < <%= classified_app_name %>::Action
6
+ <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_app_name %>::Action
7
7
  <%= module_controller_offset %> def handle(*, response)
8
8
  <%= module_controller_offset %> response.body = self.class.name
9
9
  <%= module_controller_offset %> end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module <%= classified_slice_name %>
3
+ module <%= camelized_slice_name %>
4
4
  module Actions
5
5
  <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= classified_action_name %> < <%= classified_slice_name %>::Action
6
+ <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_slice_name %>::Action
7
7
  <%= module_controller_offset %> def handle(*, response)
8
8
  <%= module_controller_offset %> response.body = self.class.name
9
9
  <%= module_controller_offset %> end
@@ -1,2 +1,2 @@
1
- <h1><%= classified_slice_name %>::Views::<%= classified_controller_name %>::<%= classified_action_name %></h1>
1
+ <h1><%= camelized_slice_name %>::Views::<%= camelized_controller_name %>::<%= camelized_action_name %></h1>
2
2
  <h2><%= template_path %></h2>
@@ -3,10 +3,10 @@
3
3
 
4
4
  require "<%= underscored_slice_name %>/view"
5
5
 
6
- module <%= classified_slice_name %>
6
+ module <%= camelized_slice_name %>
7
7
  module Views
8
8
  <%= module_controller_declaration %>
9
- <%= module_controller_offset %>class <%= classified_action_name %> < <%= classified_slice_name %>::View
9
+ <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_slice_name %>::View
10
10
  <%= module_controller_offset %>end
11
11
  <%= module_controller_end %>
12
12
  end
@@ -42,16 +42,19 @@ module Hanami
42
42
  private_constant :ROUTE_RESTFUL_HTTP_METHODS
43
43
 
44
44
  ROUTE_RESTFUL_URL_SUFFIXES = {
45
- "index" => "",
46
- "new" => "/new",
47
- "create" => "",
48
- "edit" => "/:id/edit",
49
- "update" => "/:id",
50
- "show" => "/:id",
51
- "destroy" => "/:id"
45
+ "index" => [],
46
+ "new" => ["new"],
47
+ "create" => [],
48
+ "edit" => [":id", "edit"],
49
+ "update" => [":id"],
50
+ "show" => [":id"],
51
+ "destroy" => [":id"]
52
52
  }.freeze
53
53
  private_constant :ROUTE_RESTFUL_URL_SUFFIXES
54
54
 
55
+ PATH_SEPARATOR = "/"
56
+ private_constant :PATH_SEPARATOR
57
+
55
58
  attr_reader :fs
56
59
 
57
60
  attr_reader :inflector
@@ -81,9 +84,9 @@ module Hanami
81
84
  end
82
85
 
83
86
  def generate_for_app(controller, action, url, http, _format, _skip_view, context)
84
- fs.inject_line_at_block_bottom(
87
+ fs.inject_line_at_class_bottom(
85
88
  fs.join("config", "routes.rb"),
86
- /define/,
89
+ "class Routes",
87
90
  route(controller, action, url, http)
88
91
  )
89
92
 
@@ -120,7 +123,10 @@ module Hanami
120
123
  alias_method :t, :template
121
124
 
122
125
  def route_url(controller, action, url)
123
- CLI::URL.call(url || ("/#{controller.join('/')}" + ROUTE_RESTFUL_URL_SUFFIXES.fetch(action)))
126
+ action = ROUTE_RESTFUL_URL_SUFFIXES.fetch(action) { [action] }
127
+ url ||= "#{PATH_SEPARATOR}#{(controller + action).join(PATH_SEPARATOR)}"
128
+
129
+ CLI::URL.call(url)
124
130
  end
125
131
 
126
132
  def route_http(action, http)
@@ -14,14 +14,14 @@ module Hanami
14
14
  super(inflector, app, slice, nil)
15
15
  end
16
16
 
17
- def classified_controller_name
17
+ def camelized_controller_name
18
18
  controller.map do |token|
19
19
  inflector.camelize(token)
20
20
  end.join(NAMESPACE_SEPARATOR)
21
21
  end
22
22
 
23
- def classified_action_name
24
- inflector.classify(action)
23
+ def camelized_action_name
24
+ inflector.camelize(action)
25
25
  end
26
26
 
27
27
  def underscored_controller_name
@@ -1,7 +1,7 @@
1
1
  # auto_register: false
2
2
  # frozen_string_literal: true
3
3
 
4
- module <%= classified_slice_name %>
5
- class Action < <%= classified_app_name %>::Action
4
+ module <%= camelized_slice_name %>
5
+ class Action < <%= camelized_app_name %>::Action
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # auto_register: false
2
2
  # frozen_string_literal: true
3
3
 
4
- module <%= classified_slice_name %>
4
+ module <%= camelized_slice_name %>
5
5
  module Entities
6
6
  end
7
7
  end
@@ -3,8 +3,8 @@
3
3
  require "<%= underscored_app_name %>/repository"
4
4
  require_relative "entities"
5
5
 
6
- module <%= classified_slice_name %>
7
- class Repository < <%= classified_app_name %>::Repository
6
+ module <%= camelized_slice_name %>
7
+ class Repository < <%= camelized_app_name %>::Repository
8
8
  struct_namespace Entities
9
9
  end
10
10
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module <%= classified_slice_name %>
3
+ module <%= camelized_slice_name %>
4
4
  class Slice < Hanami::Slice
5
5
  end
6
6
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  require "<%= underscored_app_name %>/view"
5
5
 
6
- module <%= classified_slice_name %>
7
- class View < <%= classified_app_name %>::View
6
+ module <%= camelized_slice_name %>
7
+ class View < <%= camelized_app_name %>::View
8
8
  end
9
9
  end
@@ -15,7 +15,9 @@ module Hanami
15
15
  end
16
16
 
17
17
  def call(app, slice, slice_url_prefix, context: SliceContext.new(inflector, app, slice, slice_url_prefix))
18
- fs.inject_line_at_block_bottom(fs.join("config", "routes.rb"), /define/, t("routes.erb", context).chomp)
18
+ fs.inject_line_at_class_bottom(
19
+ fs.join("config", "routes.rb"), "class Routes", t("routes.erb", context).chomp
20
+ )
19
21
 
20
22
  fs.mkdir(directory = "slices/#{slice}")
21
23
 
@@ -13,8 +13,8 @@ module Hanami
13
13
  super(inflector, app)
14
14
  end
15
15
 
16
- def classified_slice_name
17
- inflector.classify(slice)
16
+ def camelized_slice_name
17
+ inflector.camelize(slice)
18
18
  end
19
19
 
20
20
  def underscored_slice_name
@@ -19,8 +19,8 @@ module Hanami
19
19
  Version.gem_requirement
20
20
  end
21
21
 
22
- def classified_app_name
23
- inflector.classify(app)
22
+ def camelized_app_name
23
+ inflector.camelize(app)
24
24
  end
25
25
 
26
26
  def underscored_app_name
@@ -3,7 +3,7 @@
3
3
 
4
4
  require "hanami/action"
5
5
 
6
- module <%= classified_app_name %>
6
+ module <%= camelized_app_name %>
7
7
  class Action < Hanami::Action
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "hanami"
4
4
 
5
- module <%= classified_app_name %>
5
+ module <%= camelized_app_name %>
6
6
  class App < Hanami::App
7
7
  end
8
8
  end
@@ -15,6 +15,10 @@ group :development, :test do
15
15
  gem "dotenv"
16
16
  end
17
17
 
18
+ group :cli, :development do
19
+ gem "hanami-reloader"
20
+ end
21
+
18
22
  group :cli, :development, :test do
19
23
  gem "hanami-rspec"
20
24
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ max_threads_count = ENV.fetch("HANAMI_MAX_THREADS", 5)
4
+ min_threads_count = ENV.fetch("HANAMI_MIN_THREADS") { max_threads_count }
5
+ threads min_threads_count, max_threads_count
6
+
7
+ port ENV.fetch("HANAMI_PORT", 2300)
8
+ environment ENV.fetch("HANAMI_ENV", "development")
9
+ workers ENV.fetch("HANAMI_WEB_CONCURRENCY", 2)
10
+
11
+ on_worker_boot do
12
+ Hanami.shutdown
13
+ end
14
+
15
+ preload_app!
@@ -1 +1 @@
1
- # <%= classified_app_name %>
1
+ # <%= camelized_app_name %>
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module <%= classified_app_name %>
3
+ module <%= camelized_app_name %>
4
4
  class Routes < Hanami::Routes
5
- define do
6
- root { "Hello from Hanami" }
7
- end
5
+ root { "Hello from Hanami" }
8
6
  end
9
7
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "<%= underscored_app_name %>/types"
4
4
 
5
- module <%= classified_app_name %>
5
+ module <%= camelized_app_name %>
6
6
  class Settings < Hanami::Settings
7
7
  # Define your app settings here, for example:
8
8
  #
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "dry/types"
4
4
 
5
- module <%= classified_app_name %>
5
+ module <%= camelized_app_name %>
6
6
  Types = Dry.Types
7
7
 
8
8
  module Types
@@ -4,7 +4,7 @@
4
4
  require "dry/validation"
5
5
  require "dry/schema/messages/i18n"
6
6
 
7
- module <%= classified_app_name %>
7
+ module <%= camelized_app_name %>
8
8
  module Validator < Dry::Validation::Contract
9
9
  config.messages.backend = :i18n
10
10
  config.messages.top_namespace = "validation"
@@ -40,6 +40,7 @@ module Hanami
40
40
  fs.write("config/app.rb", t("app.erb", context))
41
41
  fs.write("config/settings.rb", t("settings.erb", context))
42
42
  fs.write("config/routes.rb", t("routes.erb", context))
43
+ fs.write("config/puma.rb", t("puma.erb", context))
43
44
 
44
45
  fs.write("lib/tasks/.keep", t("keep.erb", context))
45
46
  fs.write("lib/#{app}/types.rb", t("types.erb", context))
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module CLI
5
- VERSION = "2.0.0.beta2"
5
+ VERSION = "2.0.0.beta3"
6
6
  end
7
7
  end
@@ -34,8 +34,9 @@ module Hanami
34
34
  hanami_app
35
35
  end
36
36
 
37
- define_method(:app) do
38
- hanami_app
37
+ define_method(:reload) do
38
+ puts "Reloading..."
39
+ Kernel.exec("#{$PROGRAM_NAME} console")
39
40
  end
40
41
 
41
42
  define_method(:method_missing) do |name, *args, &block|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta2
4
+ version: 2.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-16 00:00:00.000000000 Z
11
+ date: 2022-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,20 +58,20 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.2'
61
+ version: '0.3'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 0.2.0
64
+ version: 0.3.0
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '0.2'
71
+ version: '0.3'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 0.2.0
74
+ version: 0.3.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: dry-inflector
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -212,6 +212,7 @@ files:
212
212
  - lib/hanami/cli/generators/gem/app/env.erb
213
213
  - lib/hanami/cli/generators/gem/app/gemfile.erb
214
214
  - lib/hanami/cli/generators/gem/app/keep.erb
215
+ - lib/hanami/cli/generators/gem/app/puma.erb
215
216
  - lib/hanami/cli/generators/gem/app/rakefile.erb
216
217
  - lib/hanami/cli/generators/gem/app/readme.erb
217
218
  - lib/hanami/cli/generators/gem/app/routes.erb
@@ -255,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
256
  - !ruby/object:Gem::Version
256
257
  version: 1.3.1
257
258
  requirements: []
258
- rubygems_version: 3.3.7
259
+ rubygems_version: 3.3.3
259
260
  signing_key:
260
261
  specification_version: 4
261
262
  summary: Hanami CLI