hanami-reloader 2.0.0.rc1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: