hanami-reloader 1.0.0.beta4 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 879d10a62979c43f97a03c9712c0ff33185a94a966848582ed7e5240062ebb7a
4
- data.tar.gz: d671685cc6870c668828f24dc874895d84ec92ba81d3c69f887136da13fc664d
3
+ metadata.gz: 6c0d0e893c89b578a0e297245fba34b1d945f51e83e1eb49124752ad5e125be0
4
+ data.tar.gz: b33608877874b06fa09b31179f29b6e933a7b0ea01b1efba4bf18d6f42be39c4
5
5
  SHA512:
6
- metadata.gz: 3fa3161573cc82a13a9448093e352d776162e803536135dbdaf207920fe89f88d758deb228af84d8320089eae2a0adb956080a47617a7073bfa5e02abda9d05d
7
- data.tar.gz: fe8a14772df0eed0b797cd77c94e6439647269ac59c05a884ba63e741fbf6ca921dc4d085a73f9fad2dd37c79182d3cb0c5f45a5951cf75b1dbc0e5da2e047fb
6
+ metadata.gz: 35afb418f581321bf01c9c545cee648728ab05088a596ac7e923d3e291dc2e2c6ba34f97115d7a6c3b2732daa0081da44af08d7925e412c94e1725d93f16e08e
7
+ data.tar.gz: cc8ae84e5c8c382d12a9e676253b8e3cd5efa40ad898bbeb7cf3117ec3be157a67b30c6814470446878bfd53bc0044d47a7a66dda6fbb55e07c81973db7a6f5c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  Code reloading for Hanami 2
4
4
 
5
+ ## v2.0.0 - 2022-11-22
6
+
7
+ ### Added
8
+
9
+ - [Tim Riley] Use Zeitwerk to autoload the gem
10
+ - [Luca Guidi] Generate new apps by requiring `guard-puma` `~> 0.8`
11
+ - [Tim Riley] Run bundle install after modifying `Gemfile`
12
+
13
+ ### Fixed
14
+
15
+ - [Luca Guidi] Ensure to use the given HTTP port
16
+
17
+ ## v2.0.0.rc1 - 2022-11-08
18
+
19
+ ### Changed
20
+
21
+ - [Luca Guidi] Follow `hanami` versioning
22
+
5
23
  ## v1.0.0.beta4 - 2022-10-24
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.beta"
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,10 +1,5 @@
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"
7
-
8
3
  module Hanami
9
4
  module Reloader
10
5
  module Commands
@@ -27,6 +22,11 @@ module Hanami
27
22
  class Install < Hanami::CLI::Command
28
23
  desc "Generate configuration for code reloading"
29
24
 
25
+ def initialize(fs: Dry::Files.new, bundler: CLI::Bundler.new(fs: fs), **args)
26
+ super(fs: fs, **args)
27
+ @bundler = bundler
28
+ end
29
+
30
30
  def call(*, **)
31
31
  generate_configuration(Guardfile.default_path)
32
32
  bundle_gems
@@ -34,6 +34,8 @@ module Hanami
34
34
 
35
35
  private
36
36
 
37
+ attr_reader :bundler
38
+
37
39
  def generate_configuration(path)
38
40
  fs.write path, <<~CODE
39
41
  # frozen_string_literal: true
@@ -52,6 +54,7 @@ module Hanami
52
54
  def bundle_gems
53
55
  fs.touch("Gemfile")
54
56
  gemfile = fs.read("Gemfile")
57
+
55
58
  return if gemfile.include?("guard-puma")
56
59
 
57
60
  if gemfile.include?("group :development do")
@@ -62,15 +65,25 @@ module Hanami
62
65
  fs.append "Gemfile", <<~CODE
63
66
 
64
67
  group :development do
65
- gem "guard-puma"
68
+ gem "guard-puma", "~> 0.8"
66
69
  end
67
70
  CODE
68
71
  end
72
+
73
+ bundler.install!
69
74
  end
70
75
  end
71
76
 
72
77
  # Override `hanami server` command
73
78
  class Server < Hanami::CLI::Commands::App::Server
79
+ # @since 2.0.0
80
+ # @api private
81
+ DEFAULT_GUARD_PUMA_OPTIONS = ["-n", "f", "-i", "-g", Guardfile.group, "-G"].freeze
82
+
83
+ # @since 2.0.0
84
+ # @api private
85
+ OPTIONS_SEPARATOR = " "
86
+
74
87
  option :guardfile, type: :string, desc: "Path to Guardfile", default: Guardfile.default_path.to_s
75
88
  option :code_reloading, type: :boolean, desc: "Code reloading", default: true
76
89
 
@@ -84,18 +97,25 @@ module Hanami
84
97
  code_reloading = args.fetch(:code_reloading)
85
98
 
86
99
  if code_reloading
87
- path = Guardfile.path(args.fetch(:guardfile))
88
- exec "bundle exec guard -n f -i -g #{Guardfile.group} -G #{path}"
100
+ guard_puma_env_vars!(**args)
101
+ exec "bundle exec guard #{guard_puma_options(**args)}"
89
102
  else
90
103
  super
91
104
  end
92
105
  end
106
+
107
+ private
108
+
109
+ def guard_puma_env_vars!(**args)
110
+ ENV["HANAMI_PORT"] = args.fetch(:port).to_s
111
+ end
112
+
113
+ def guard_puma_options(**args)
114
+ options = DEFAULT_GUARD_PUMA_OPTIONS.dup
115
+ options.push(Guardfile.path(args.fetch(:guardfile)))
116
+ options.join(OPTIONS_SEPARATOR)
117
+ end
93
118
  end
94
119
  end
95
120
  end
96
121
  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 = "1.0.0.beta4"
5
+ VERSION = "2.0.0"
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: 1.0.0.beta4
4
+ version: 2.0.0
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-10-24 00:00:00.000000000 Z
11
+ date: 2022-11-22 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.beta
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.beta
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.7
126
140
  signing_key: