hanami-cli 2.0.0.beta2 → 2.0.0.beta3

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 (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