hanami-reloader 1.0.0.alpha1 → 1.0.0.beta3

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: 8d91dd32f1438886ca1a40b2247d897fed66ae5b83e312ae58da597d31372a66
4
- data.tar.gz: 9d3ea58aaf49fd6537c90808e9824371ddf8c6fd0bc6cd01e8cfcaf853d6051d
3
+ metadata.gz: 99be1699345c5f4febac46c7fd5cc26c49d24604b98a049dadb0f3f2290db2a3
4
+ data.tar.gz: 9a53a2b068b64a9398b915180ab91b524fcd41a0b4cd7e0a583305ee33244dbf
5
5
  SHA512:
6
- metadata.gz: 756e9e6636f484d41e41b11331623dd7e6ed0c311a90a0a2e037eed60b5c655dc65f02ae53023bc8f496137747999f6f27dd9659dea986619f1f5afe9f0083b3
7
- data.tar.gz: 8a58deecca120364099db7ce59a7f1000ca66ca581339407fd882b1700da6974bf9b2060ca7602556e22ee31c89f7e0c095f0323ea8a3d4ff74687928ab805cb
6
+ metadata.gz: f71bc7d05997a92cb9a7131da09d96c3045b9a3ba54d4400223a90ec7c5e6823775f747106b43fdea3867b5ca7a158fe08537efcdfe25bed4c48fc642846bae9
7
+ data.tar.gz: f4175e6c9448942649ae0d29011f4c4d2e5ea36b709d2b30caf8a0b6ba21f647686c17703469a38101b8f3970a4be8a959d0ffafdbee4ace3b0566ed0f6681d9
data/CHANGELOG.md CHANGED
@@ -1,31 +1,55 @@
1
1
  # Hanami::Reloader
2
- Code reloading for Hanami
2
+
3
+ Code reloading for Hanami 2
4
+
5
+ ## v1.0.0.beta3 - 2022-09-21
6
+
7
+ ### Added
8
+
9
+ - [Luca Guidi] Support for Hanami 2.0
10
+ - [Luca Guidi] Official support for Ruby 3.0 and 3.1
11
+
12
+ ### Changed
13
+
14
+ - [Luca Guidi] Drop support for Ruby: MRI 2.5, 2.6, and 2.7.
3
15
 
4
16
  ## v1.0.0.alpha1 - 2019-01-30
17
+
5
18
  ### Added
19
+
6
20
  - [Luca Guidi] Added support for `hanami server --no-code-reloading` to skip code reloading.
7
21
  - [Luca Guidi] Added `hanami server --guardfile` option to specify the path to `Guardfile`. It defaults to `Guardfile` at the root of the project.
8
22
  - [Luca Guidi] Added support for `hanami generate reloader --puma` to generate Puma specific configuration.
9
23
 
10
24
  ### Changed
25
+
11
26
  - [Luca Guidi] Drop support for Ruby: MRI 2.3, and 2.4.
12
27
  - [Luca Guidi] `hanami generate reloader` generates `Guardfile` (instead of `.hanami.server.guardfile`), with the Guard `:server` group.
13
28
  - [Luca Guidi] `hanami server` will look for `Guardfile` at the root of the project instead of `.hanami.server.guardfile`.
14
29
 
15
- ## v0.3.0 - 2019-01-18
30
+ ## v0.3.0 - 2020-02-10
31
+
16
32
  ### Added
33
+
34
+ - [Luca Guidi] Official support for Ruby 2.7.0
17
35
  - [Luca Guidi] Official support for Ruby 2.6.0
18
36
  - [Luca Guidi] Support for `bundler` 2.0+
19
37
 
20
38
  ## v0.2.1 - 2018-01-23
39
+
21
40
  ### Fixed
41
+
22
42
  - [Luca Guidi] Avoid Guard prompt when shutting down the server
23
43
 
24
44
  ## v0.2.0 - 2017-11-24
45
+
25
46
  ### Changed
47
+
26
48
  - [Marcello Rocha] Use `.hanami.server.guardfile` instead of `Guardfile` to avoid conflicts with other `guard` plugins.
27
49
 
28
50
  ## v0.1.0 - 2017-11-01
51
+
29
52
  ### Added
53
+
30
54
  - [Luca Guidi] Added Hanami command `hanami generate reloader`
31
55
  - [Luca Guidi] Code reloading based on `guard`
data/README.md CHANGED
@@ -1,73 +1,64 @@
1
1
  # Hanami::Reloader
2
2
 
3
- **Experimental** code reloading for Hanami.
3
+ Reloader and testing support for [full-stack Hanami applications](`https://github.com/hanami/hanami`).
4
4
 
5
- ## Usage
6
-
7
- ### 1. Setup Hanami project
5
+ ## Status
8
6
 
9
- ```shell
10
- gem install hanami
11
- hanami new bookshelf && cd bookshelf
12
- ```
7
+ [![Gem Version](https://badge.fury.io/rb/hanami-reloader.svg)](https://badge.fury.io/rb/hanami-rspec)
8
+ [![CI](https://github.com/hanami/reloader/workflows/ci/badge.svg?branch=main)](https://github.com/hanami/rspec/actions?query=workflow%3Aci+branch%3Amain)
9
+ [![Depfu](https://badges.depfu.com/badges/a8545fb67cf32a2c75b6227bc0821027/overview.svg)](https://depfu.com/github/hanami/reloader?project=Bundler)
13
10
 
14
- ### 2. Prepare Gemfile
11
+ ## Version
15
12
 
16
- Edit `Gemfile`
13
+ Versioning of this gem follows Reloader.
17
14
 
18
- 1. Remove `shotgun`
19
- 2. Add the following lines
15
+ ## Contact
20
16
 
21
- ```ruby
22
- group :plugins do
23
- gem "hanami-reloader", "~> 0.3"
24
- end
25
- ```
26
-
27
- ### 3. Setup hanami-reloader
28
-
29
- ```shell
30
- bundle
31
- bundle exec hanami generate reloader
32
- ```
17
+ - Home page: http://hanamirb.org
18
+ - Mailing List: http://hanamirb.org/mailing-list
19
+ - Bugs/Issues: https://github.com/hanami/reloader/issues
20
+ - Support: http://stackoverflow.com/questions/tagged/hanami
21
+ - Chat: http://chat.hanamirb.org
33
22
 
34
- Now you can start the server via `bundle exec hanami server`.
23
+ ## Rubies
35
24
 
36
- ## Upgrade Nodes
25
+ **Hanami::Reloader** supports Ruby (MRI) 3.0+
37
26
 
38
- If you're upgrading from `v0.1.0` to `v0.2.0`, use `.hanami.server.guardfile` instead of `Guardfile`.
27
+ ## Installation
39
28
 
40
- ## Puma usage
41
-
42
- If you're using `puma`, I **strongly** suggest to use `guard-puma` **alongside** with `hanami-reloader`.
43
-
44
- Add `guard-puma` to your `Gemfile`:
29
+ Add this line to your application's Gemfile:
45
30
 
46
31
  ```ruby
47
- group :development do
48
- gem "guard-puma"
32
+ group :cli, :development do
33
+ gem "hanami-reloader"
49
34
  end
50
35
  ```
51
36
 
52
- Then change the group name in `.hanami.server.guardfile` from `"rack"` to `"puma"`:
37
+ And then execute:
53
38
 
54
- ```diff
55
- -guard "rack", port: ENV["HANAMI_PORT"] || 2300 do
56
- +guard "puma", port: ENV["HANAMI_PORT"] || 2300 do
57
- ```
39
+ $ bundle install
40
+ $ bundle exec hanami setup
58
41
 
59
- Now start the server as usual: `bundle exec hanami server`
42
+ ## Usage
60
43
 
61
44
  ## Development
62
45
 
63
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
46
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
64
47
 
65
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
48
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
66
49
 
67
50
  ## Contributing
68
51
 
69
- Bug reports and pull requests are welcome on GitHub at https://github.com/jodosha/hanami-reloader.
52
+ Bug reports and pull requests are welcome on GitHub at https://github.com/hanami/reloader. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/hanami/rspec/blob/main/CODE_OF_CONDUCT.md).
53
+
54
+ ## License
55
+
56
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
57
+
58
+ ## Code of Conduct
59
+
60
+ Everyone interacting in the `Hanami::Reloader` project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/hanami/reloader/blob/main/CODE_OF_CONDUCT.md).
70
61
 
71
62
  ## Copyright
72
63
 
73
- Copyright © 2017-2018 Luca Guidi – Released under MIT License
64
+ Copyright © 2014-2022 Hanami Team – Released under MIT License
@@ -15,19 +15,20 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = "http://hanamirb.org"
16
16
  spec.license = "MIT"
17
17
 
18
- spec.required_ruby_version = ">= 2.5.0"
18
+ spec.required_ruby_version = ">= 3.0"
19
19
 
20
- spec.files = `git ls-files -- lib/* CHANGELOG.md LICENSE.md README.md hanami-reloader.gemspec`.split($INPUT_RECORD_SEPARATOR)
20
+ spec.files = `git ls-files -- lib/* CHANGELOG.md LICENSE.md README.md hanami-reloader.gemspec`.split($INPUT_RECORD_SEPARATOR) # rubocop:disable Layout/LineLength
21
21
  spec.bindir = "exe"
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
26
+ spec.metadata["rubygems_mfa_required"] = "true"
26
27
 
27
- spec.add_dependency "hanami", "~> 2.0.alpha"
28
- spec.add_dependency "guard-rack", "~> 2.2"
28
+ spec.add_dependency "hanami-cli", "~> 2.0.beta"
29
29
 
30
30
  spec.add_development_dependency "bundler", ">= 1.6", "< 3"
31
- spec.add_development_dependency "rake", "~> 12.0"
31
+ spec.add_development_dependency "rake", "~> 13.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.7"
33
+ spec.add_development_dependency "rubocop", "~> 1.11"
33
34
  end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/cli"
4
+ require "hanami/cli/command"
5
+ require "hanami/cli/commands"
6
+ require "hanami/cli/commands/app/server"
7
+
8
+ module Hanami
9
+ module Reloader
10
+ module Commands
11
+ # Guardfile
12
+ module Guardfile
13
+ def self.group
14
+ "server"
15
+ end
16
+
17
+ def self.default_path
18
+ path("Guardfile")
19
+ end
20
+
21
+ def self.path(value)
22
+ value
23
+ end
24
+ end
25
+
26
+ # Generate hanami-reloader configuration
27
+ class Install < Hanami::CLI::Command
28
+ desc "Generate configuration for code reloading"
29
+
30
+ def call(*, **)
31
+ generate_configuration(Guardfile.default_path)
32
+ bundle_gems
33
+ end
34
+
35
+ private
36
+
37
+ def generate_configuration(path)
38
+ fs.write path, <<~CODE
39
+ # frozen_string_literal: true
40
+
41
+ group :#{Guardfile.group} do
42
+ guard "puma", port: ENV["HANAMI_PORT"] || 2300 do
43
+ watch(%r{config/*})
44
+ watch(%r{lib/*})
45
+ watch(%r{app/*})
46
+ watch(%r{slices/*})
47
+ end
48
+ end
49
+ CODE
50
+ end
51
+
52
+ def bundle_gems
53
+ fs.touch("Gemfile")
54
+ gemfile = fs.read("Gemfile")
55
+ return if gemfile.include?("guard-puma")
56
+
57
+ if gemfile.include?("group :development do")
58
+ fs.inject_line_at_block_bottom "Gemfile", "group :development do", <<~CODE
59
+ gem "guard-puma"
60
+ CODE
61
+ else
62
+ fs.append "Gemfile", <<~CODE
63
+
64
+ group :development do
65
+ gem "guard-puma"
66
+ end
67
+ CODE
68
+ end
69
+ end
70
+ end
71
+
72
+ # Override `hanami server` command
73
+ class Server < Hanami::CLI::Commands::App::Server
74
+ option :guardfile, type: :string, desc: "Path to Guardfile", default: Guardfile.default_path.to_s
75
+ option :code_reloading, type: :boolean, desc: "Code reloading", default: true
76
+
77
+ example [
78
+ "--no-code-reloading # Disable code reloading"
79
+ ]
80
+
81
+ def call(**args)
82
+ code_reloading = args.fetch(:code_reloading)
83
+
84
+ if code_reloading
85
+ path = Guardfile.path(args.fetch(:guardfile))
86
+ exec "bundle exec guard -n f -i -g #{Guardfile.group} -G #{path}"
87
+ else
88
+ super
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ if Hanami::CLI.within_hanami_app?
97
+ Hanami::CLI.after "install", Hanami::Reloader::Commands::Install
98
+ Hanami::CLI.register "server", Hanami::Reloader::Commands::Server
99
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module Reloader
5
- VERSION = "1.0.0.alpha1"
5
+ VERSION = "1.0.0.beta3"
6
6
  end
7
7
  end
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami/cli/commands"
4
-
5
3
  module Hanami
6
4
  # Hanami reloader
7
5
  module Reloader
8
- require "hanami/reloader/version"
9
- require "hanami/reloader/cli"
6
+ require_relative "reloader/version"
7
+ require_relative "reloader/commands"
10
8
  end
11
9
  end
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-reloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha1
4
+ version: 1.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-30 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
- name: hanami
14
+ name: hanami-cli
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.alpha
19
+ version: 2.0.beta
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.alpha
27
- - !ruby/object:Gem::Dependency
28
- name: guard-rack
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.2'
26
+ version: 2.0.beta
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +50,14 @@ dependencies:
64
50
  requirements:
65
51
  - - "~>"
66
52
  - !ruby/object:Gem::Version
67
- version: '12.0'
53
+ version: '13.0'
68
54
  type: :development
69
55
  prerelease: false
70
56
  version_requirements: !ruby/object:Gem::Requirement
71
57
  requirements:
72
58
  - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: '12.0'
60
+ version: '13.0'
75
61
  - !ruby/object:Gem::Dependency
76
62
  name: rspec
77
63
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +72,20 @@ dependencies:
86
72
  - - "~>"
87
73
  - !ruby/object:Gem::Version
88
74
  version: '3.7'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.11'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.11'
89
89
  description: Code reloading for Hanami
90
90
  email:
91
91
  - me@lucaguidi.com
@@ -99,14 +99,15 @@ files:
99
99
  - hanami-reloader.gemspec
100
100
  - lib/hanami-reloader.rb
101
101
  - lib/hanami/reloader.rb
102
- - lib/hanami/reloader/cli.rb
102
+ - lib/hanami/reloader/commands.rb
103
103
  - lib/hanami/reloader/version.rb
104
104
  homepage: http://hanamirb.org
105
105
  licenses:
106
106
  - MIT
107
107
  metadata:
108
108
  allowed_push_host: https://rubygems.org
109
- post_install_message:
109
+ rubygems_mfa_required: 'true'
110
+ post_install_message:
110
111
  rdoc_options: []
111
112
  require_paths:
112
113
  - lib
@@ -114,15 +115,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="
116
117
  - !ruby/object:Gem::Version
117
- version: 2.5.0
118
+ version: '3.0'
118
119
  required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  requirements:
120
121
  - - ">"
121
122
  - !ruby/object:Gem::Version
122
123
  version: 1.3.1
123
124
  requirements: []
124
- rubygems_version: 3.0.2
125
- signing_key:
125
+ rubygems_version: 3.3.3
126
+ signing_key:
126
127
  specification_version: 4
127
128
  summary: Hanami reloader
128
129
  test_files: []
@@ -1,85 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hanami
4
- module Reloader
5
- module CLI
6
- # Guardfile
7
- module Guardfile
8
- def self.group
9
- "server"
10
- end
11
-
12
- def self.default_path
13
- path("Guardfile")
14
- end
15
-
16
- def self.path(path)
17
- Hanami.root.join(path)
18
- end
19
- end
20
-
21
- # Generate hanami-reloader configuration
22
- class Generate < Hanami::CLI::Commands::Command
23
- desc "Generate configuration for code reloading"
24
-
25
- option :guardfile, type: :string, desc: "Path to Guardfile", default: Guardfile.default_path.to_s
26
- option :puma, type: :boolean, desc: "Generate configuration for Puma", default: false
27
-
28
- def call(**args)
29
- path = Guardfile.path(args.fetch(:guardfile))
30
- puma = args.fetch(:puma)
31
-
32
- generate_configuration(path, puma)
33
- bundle_gems(puma)
34
- end
35
-
36
- private
37
-
38
- def generate_configuration(path, puma)
39
- guard = puma ? "puma" : "rack"
40
-
41
- files.touch(path)
42
- files.append path, <<~CODE
43
- group :#{Guardfile.group} do
44
- guard "#{guard}", port: ENV["HANAMI_PORT"] || 2300 do
45
- watch(%r{config/*})
46
- watch(%r{lib/*})
47
- watch(%r{apps/*})
48
- end
49
- end
50
- CODE
51
- end
52
-
53
- def bundle_gems(puma)
54
- return unless puma
55
-
56
- exec "bundle add guard-puma --skip-install --group=development"
57
- end
58
- end
59
-
60
- # Override `hanami server` command
61
- class Server < Hanami::CLI::Commands::Server
62
- option :guardfile, type: :string, desc: "Path to Guardfile", default: Guardfile.default_path.to_s
63
- option :code_reloading, type: :boolean, desc: "Code reloading", default: true
64
-
65
- example [
66
- "--no-code-reloading # Disable code reloading"
67
- ]
68
-
69
- def call(**args)
70
- code_reloading = args.fetch(:code_reloading)
71
-
72
- if code_reloading
73
- path = Guardfile.path(args.fetch(:guardfile))
74
- exec "bundle exec guard -n f -i -g #{Guardfile.group} -G #{path}"
75
- else
76
- super
77
- end
78
- end
79
- end
80
- end
81
- end
82
- end
83
-
84
- Hanami::CLI.register "generate reloader", Hanami::Reloader::CLI::Generate
85
- Hanami::CLI.register "server", Hanami::Reloader::CLI::Server