hanami-reloader 2.0.0.rc1 → 2.0.1

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: 8edd2f5e24d44986eaad1226403622c8d65090b642731aaecd247409b69d5ba8
4
- data.tar.gz: 28bbe58ab2d7961422ff2211ae02abae51d70b766e030b3e10b22e8fca66b825
3
+ metadata.gz: 7ee77969c454bf08e4d38f7ab35853a4070258bedf353711361b06f044f3b390
4
+ data.tar.gz: 82cf5930e7928fc94659d362951bd613f4333433ce2f00c15e686ef00f05f41f
5
5
  SHA512:
6
- metadata.gz: 194ebe22506c22847f3de482cdd5b0a77a6f3a0cdff13195f871b58d3a399667d044e87c3699bf2bb7d1bd2ac120ec6d9073245344cf3c892d4f466f2ca67f09
7
- data.tar.gz: 2d6cdcdc62f2ec674f6f6cd289a2c3f93ffdcbdd5b0268f9ab757aed078bbf45f7e84c5afa980e76b65ab129fa085b1b69282d1c263df45f02d67eaa03e4553e
6
+ metadata.gz: 8227c5a281ec65f2fbfdd3c308619f4fdc9c0d71adc45439251bfa91b56555d49c09d787abf8e5c99c563e9f7ef7291c5da7417c1e002fa4e2d41f60264ee409
7
+ data.tar.gz: 65dc87448f9a92154a019256477c8c92e4a44bab398137816a663fb528d715065a35b110746f418b0d4a8903696a3e7952eb85ef9a42b217153f2f27f69e93fa
data/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  Code reloading for Hanami 2
4
4
 
5
+ ## v2.0.1 - 2022-12-06
6
+
7
+ ### Fixed
8
+
9
+ - [Luca Guidi] Ensure `hanami server` to respect HTTP port used in `.env` or the value given as CLI argument (`--port`)
10
+
11
+ ## v2.0.0 - 2022-11-22
12
+
13
+ ### Added
14
+
15
+ - [Tim Riley] Use Zeitwerk to autoload the gem
16
+ - [Luca Guidi] Generate new apps by requiring `guard-puma` `~> 0.8`
17
+ - [Tim Riley] Run bundle install after modifying `Gemfile`
18
+
19
+ ### Fixed
20
+
21
+ - [Luca Guidi] Ensure to use the given HTTP port
22
+
5
23
  ## v2.0.0.rc1 - 2022-11-08
6
24
 
7
25
  ### Changed
@@ -25,7 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
26
26
  spec.metadata["rubygems_mfa_required"] = "true"
27
27
 
28
- spec.add_dependency "hanami-cli", "~> 2.0.rc"
28
+ spec.add_dependency "hanami-cli", "~> 2.0"
29
+ spec.add_dependency "zeitwerk", "~> 2.6"
29
30
 
30
31
  spec.add_development_dependency "bundler", ">= 1.6", "< 3"
31
32
  spec.add_development_dependency "rake", "~> 13.0"
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami/cli"
4
- require "hanami/cli/command"
5
- require "hanami/cli/commands"
6
- require "hanami/cli/commands/app/server"
3
+ require "hanami/port"
7
4
 
8
5
  module Hanami
9
6
  module Reloader
@@ -27,6 +24,11 @@ module Hanami
27
24
  class Install < Hanami::CLI::Command
28
25
  desc "Generate configuration for code reloading"
29
26
 
27
+ def initialize(fs: Dry::Files.new, bundler: CLI::Bundler.new(fs: fs), **args)
28
+ super(fs: fs, **args)
29
+ @bundler = bundler
30
+ end
31
+
30
32
  def call(*, **)
31
33
  generate_configuration(Guardfile.default_path)
32
34
  bundle_gems
@@ -34,12 +36,14 @@ module Hanami
34
36
 
35
37
  private
36
38
 
39
+ attr_reader :bundler
40
+
37
41
  def generate_configuration(path)
38
42
  fs.write path, <<~CODE
39
43
  # frozen_string_literal: true
40
44
 
41
45
  group :#{Guardfile.group} do
42
- guard "puma", port: ENV["HANAMI_PORT"] || 2300 do
46
+ guard "puma", port: ENV.fetch("#{Hanami::Port::ENV_VAR}", #{Hanami::Port::DEFAULT}) do
43
47
  watch(%r{config/*})
44
48
  watch(%r{lib/*})
45
49
  watch(%r{app/*})
@@ -52,6 +56,7 @@ module Hanami
52
56
  def bundle_gems
53
57
  fs.touch("Gemfile")
54
58
  gemfile = fs.read("Gemfile")
59
+
55
60
  return if gemfile.include?("guard-puma")
56
61
 
57
62
  if gemfile.include?("group :development do")
@@ -62,15 +67,25 @@ module Hanami
62
67
  fs.append "Gemfile", <<~CODE
63
68
 
64
69
  group :development do
65
- gem "guard-puma"
70
+ gem "guard-puma", "~> 0.8"
66
71
  end
67
72
  CODE
68
73
  end
74
+
75
+ bundler.install!
69
76
  end
70
77
  end
71
78
 
72
79
  # Override `hanami server` command
73
80
  class Server < Hanami::CLI::Commands::App::Server
81
+ # @since 2.0.0
82
+ # @api private
83
+ DEFAULT_GUARD_PUMA_OPTIONS = ["-n", "f", "-i", "-g", Guardfile.group, "-G"].freeze
84
+
85
+ # @since 2.0.0
86
+ # @api private
87
+ OPTIONS_SEPARATOR = " "
88
+
74
89
  option :guardfile, type: :string, desc: "Path to Guardfile", default: Guardfile.default_path.to_s
75
90
  option :code_reloading, type: :boolean, desc: "Code reloading", default: true
76
91
 
@@ -84,18 +99,25 @@ module Hanami
84
99
  code_reloading = args.fetch(:code_reloading)
85
100
 
86
101
  if code_reloading
87
- path = Guardfile.path(args.fetch(:guardfile))
88
- exec "bundle exec guard -n f -i -g #{Guardfile.group} -G #{path}"
102
+ guard_puma_env_vars!(**args)
103
+ exec "bundle exec guard #{guard_puma_options(**args)}"
89
104
  else
90
105
  super
91
106
  end
92
107
  end
108
+
109
+ private
110
+
111
+ def guard_puma_env_vars!(**args)
112
+ Hanami::Port.call!(args.fetch(:port))
113
+ end
114
+
115
+ def guard_puma_options(**args)
116
+ options = DEFAULT_GUARD_PUMA_OPTIONS.dup
117
+ options.push(Guardfile.path(args.fetch(:guardfile)))
118
+ options.join(OPTIONS_SEPARATOR)
119
+ end
93
120
  end
94
121
  end
95
122
  end
96
123
  end
97
-
98
- if Hanami::CLI.within_hanami_app?
99
- Hanami::CLI.after "install", Hanami::Reloader::Commands::Install
100
- Hanami::CLI.register "server", Hanami::Reloader::Commands::Server
101
- end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module Reloader
5
- VERSION = "2.0.0.rc1"
5
+ VERSION = "2.0.1"
6
6
  end
7
7
  end
@@ -1,9 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "hanami/cli"
4
+ require "zeitwerk"
5
+
3
6
  module Hanami
4
7
  # Hanami reloader
5
8
  module Reloader
9
+ # @since 2.0.0
10
+ # @api private
11
+ def self.gem_loader
12
+ @gem_loader ||= Zeitwerk::Loader.new.tap do |loader|
13
+ root = File.expand_path("..", __dir__)
14
+ loader.tag = "hanami-reloader"
15
+ loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-reloader.rb")
16
+ loader.push_dir(root)
17
+ loader.ignore(
18
+ "#{root}/hanami-reloader.rb",
19
+ "#{root}/hanami/controller/version.rb"
20
+ )
21
+ end
22
+ end
23
+
24
+ gem_loader.setup
6
25
  require_relative "reloader/version"
7
- require_relative "reloader/commands"
26
+
27
+ if Hanami::CLI.within_hanami_app?
28
+ Hanami::CLI.after "install", Commands::Install
29
+ Hanami::CLI.register "server", Commands::Server
30
+ end
8
31
  end
9
32
  end
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami/reloader"
3
+ require_relative "hanami/reloader"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-reloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.1
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-11-08 00:00:00.000000000 Z
11
+ date: 2022-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-cli
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.rc
19
+ version: '2.0'
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: 2.0.rc
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: zeitwerk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.6'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -118,9 +132,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
132
  version: '3.0'
119
133
  required_rubygems_version: !ruby/object:Gem::Requirement
120
134
  requirements:
121
- - - ">"
135
+ - - ">="
122
136
  - !ruby/object:Gem::Version
123
- version: 1.3.1
137
+ version: '0'
124
138
  requirements: []
125
139
  rubygems_version: 3.3.3
126
140
  signing_key: