hanami-reloader 2.0.0.rc1 → 2.0.0

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: 6c0d0e893c89b578a0e297245fba34b1d945f51e83e1eb49124752ad5e125be0
4
+ data.tar.gz: b33608877874b06fa09b31179f29b6e933a7b0ea01b1efba4bf18d6f42be39c4
5
5
  SHA512:
6
- metadata.gz: 194ebe22506c22847f3de482cdd5b0a77a6f3a0cdff13195f871b58d3a399667d044e87c3699bf2bb7d1bd2ac120ec6d9073245344cf3c892d4f466f2ca67f09
7
- data.tar.gz: 2d6cdcdc62f2ec674f6f6cd289a2c3f93ffdcbdd5b0268f9ab757aed078bbf45f7e84c5afa980e76b65ab129fa085b1b69282d1c263df45f02d67eaa03e4553e
6
+ metadata.gz: 35afb418f581321bf01c9c545cee648728ab05088a596ac7e923d3e291dc2e2c6ba34f97115d7a6c3b2732daa0081da44af08d7925e412c94e1725d93f16e08e
7
+ data.tar.gz: cc8ae84e5c8c382d12a9e676253b8e3cd5efa40ad898bbeb7cf3117ec3be157a67b30c6814470446878bfd53bc0044d47a7a66dda6fbb55e07c81973db7a6f5c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
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
+
5
17
  ## v2.0.0.rc1 - 2022-11-08
6
18
 
7
19
  ### 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,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 = "2.0.0.rc1"
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: 2.0.0.rc1
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-11-08 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.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,11 +132,11 @@ 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
- rubygems_version: 3.3.3
139
+ rubygems_version: 3.3.7
126
140
  signing_key:
127
141
  specification_version: 4
128
142
  summary: Hanami reloader