hanami-reloader 0.3.0 → 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: 7982adc5226a56d2d965c0ea68f74dc6b5b8939b8433cf1ea67fe356f2c97464
4
- data.tar.gz: a2538faf2cc0f993c4a00db2cb992b6b0a59d27c7a07d7892fbc9f85cd4b68bb
3
+ metadata.gz: 99be1699345c5f4febac46c7fd5cc26c49d24604b98a049dadb0f3f2290db2a3
4
+ data.tar.gz: 9a53a2b068b64a9398b915180ab91b524fcd41a0b4cd7e0a583305ee33244dbf
5
5
  SHA512:
6
- metadata.gz: 5d297b5099d806c23234014f81f743e2245f3d9c6a7fe1aa39c34c5f879587dc54771e5b26f2bc6fb64f885dd3b34cc5e8410ada60e65a8649e6c5bd9eaff471
7
- data.tar.gz: cbdba6f6d284b02d1e37c414fc26fa15a046e64920b3dae937f3c8dedc0bf53774a53c78d8202928796d0fee229ece714be5adc4674b299a1f13dae858c6ae86
6
+ metadata.gz: f71bc7d05997a92cb9a7131da09d96c3045b9a3ba54d4400223a90ec7c5e6823775f747106b43fdea3867b5ca7a158fe08537efcdfe25bed4c48fc642846bae9
7
+ data.tar.gz: f4175e6c9448942649ae0d29011f4c4d2e5ea36b709d2b30caf8a0b6ba21f647686c17703469a38101b8f3970a4be8a959d0ffafdbee4ace3b0566ed0f6681d9
data/CHANGELOG.md CHANGED
@@ -1,21 +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.
15
+
16
+ ## v1.0.0.alpha1 - 2019-01-30
17
+
18
+ ### Added
19
+
20
+ - [Luca Guidi] Added support for `hanami server --no-code-reloading` to skip code reloading.
21
+ - [Luca Guidi] Added `hanami server --guardfile` option to specify the path to `Guardfile`. It defaults to `Guardfile` at the root of the project.
22
+ - [Luca Guidi] Added support for `hanami generate reloader --puma` to generate Puma specific configuration.
23
+
24
+ ### Changed
25
+
26
+ - [Luca Guidi] Drop support for Ruby: MRI 2.3, and 2.4.
27
+ - [Luca Guidi] `hanami generate reloader` generates `Guardfile` (instead of `.hanami.server.guardfile`), with the Guard `:server` group.
28
+ - [Luca Guidi] `hanami server` will look for `Guardfile` at the root of the project instead of `.hanami.server.guardfile`.
3
29
 
4
30
  ## v0.3.0 - 2020-02-10
31
+
5
32
  ### Added
33
+
6
34
  - [Luca Guidi] Official support for Ruby 2.7.0
7
35
  - [Luca Guidi] Official support for Ruby 2.6.0
8
36
  - [Luca Guidi] Support for `bundler` 2.0+
9
37
 
10
38
  ## v0.2.1 - 2018-01-23
39
+
11
40
  ### Fixed
41
+
12
42
  - [Luca Guidi] Avoid Guard prompt when shutting down the server
13
43
 
14
44
  ## v0.2.0 - 2017-11-24
45
+
15
46
  ### Changed
47
+
16
48
  - [Marcello Rocha] Use `.hanami.server.guardfile` instead of `Guardfile` to avoid conflicts with other `guard` plugins.
17
49
 
18
50
  ## v0.1.0 - 2017-11-01
51
+
19
52
  ### Added
53
+
20
54
  - [Luca Guidi] Added Hanami command `hanami generate reloader`
21
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
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "hanami/reloader/version"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "hanami-reloader"
9
+ spec.version = Hanami::Reloader::VERSION
10
+ spec.authors = ["Luca Guidi"]
11
+ spec.email = ["me@lucaguidi.com"]
12
+
13
+ spec.summary = "Hanami reloader"
14
+ spec.description = "Code reloading for Hanami"
15
+ spec.homepage = "http://hanamirb.org"
16
+ spec.license = "MIT"
17
+
18
+ spec.required_ruby_version = ">= 3.0"
19
+
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
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
26
+ spec.metadata["rubygems_mfa_required"] = "true"
27
+
28
+ spec.add_dependency "hanami-cli", "~> 2.0.beta"
29
+
30
+ spec.add_development_dependency "bundler", ">= 1.6", "< 3"
31
+ spec.add_development_dependency "rake", "~> 13.0"
32
+ spec.add_development_dependency "rspec", "~> 3.7"
33
+ spec.add_development_dependency "rubocop", "~> 1.11"
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 = "0.3.0"
5
+ VERSION = "1.0.0.beta3"
6
6
  end
7
7
  end
@@ -1,20 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami/cli/commands"
4
- require "hanami/utils"
5
-
6
3
  module Hanami
7
- module Utils # rubocop:disable Style/Documentation
8
- # Monkey-patch `Hanami::Utils.reload!` to disable Ruby based code-reloading
9
- def self.reload!(directory)
10
- require!(directory)
11
- warn "Requiring #{directory}"
12
- end
13
- end
14
-
15
- # Hanami::Reloader
4
+ # Hanami reloader
16
5
  module Reloader
17
- require "hanami/reloader/version"
18
- require "hanami/reloader/cli"
6
+ require_relative "reloader/version"
7
+ require_relative "reloader/commands"
19
8
  end
20
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: 0.3.0
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: 2020-02-10 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: '1.3'
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: '1.3'
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
@@ -96,16 +96,18 @@ files:
96
96
  - CHANGELOG.md
97
97
  - LICENSE.md
98
98
  - README.md
99
+ - hanami-reloader.gemspec
99
100
  - lib/hanami-reloader.rb
100
101
  - lib/hanami/reloader.rb
101
- - lib/hanami/reloader/cli.rb
102
+ - lib/hanami/reloader/commands.rb
102
103
  - lib/hanami/reloader/version.rb
103
104
  homepage: http://hanamirb.org
104
105
  licenses:
105
106
  - MIT
106
107
  metadata:
107
108
  allowed_push_host: https://rubygems.org
108
- post_install_message:
109
+ rubygems_mfa_required: 'true'
110
+ post_install_message:
109
111
  rdoc_options: []
110
112
  require_paths:
111
113
  - lib
@@ -113,15 +115,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
115
  requirements:
114
116
  - - ">="
115
117
  - !ruby/object:Gem::Version
116
- version: 2.3.0
118
+ version: '3.0'
117
119
  required_rubygems_version: !ruby/object:Gem::Requirement
118
120
  requirements:
119
- - - ">="
121
+ - - ">"
120
122
  - !ruby/object:Gem::Version
121
- version: '0'
123
+ version: 1.3.1
122
124
  requirements: []
123
- rubygems_version: 3.1.2
124
- signing_key:
125
+ rubygems_version: 3.3.3
126
+ signing_key:
125
127
  specification_version: 4
126
128
  summary: Hanami reloader
127
129
  test_files: []
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hanami
4
- module Reloader
5
- module CLI
6
- # Generate hanami-reloader configuration
7
- class Generate < Hanami::CLI::Commands::Command
8
- requires "environment"
9
-
10
- desc "Generate configuration for code reloading"
11
-
12
- def call(*)
13
- path = Hanami.root.join(".hanami.server.guardfile")
14
-
15
- files.touch(path)
16
- files.append path, <<~CODE
17
- guard "rack", port: ENV["HANAMI_PORT"] || 2300 do
18
- watch(%r{config/*})
19
- watch(%r{lib/*})
20
- watch(%r{apps/*})
21
- end
22
- CODE
23
- end
24
- end
25
-
26
- # Override `hanami server` command
27
- class Server < Hanami::CLI::Commands::Command
28
- desc "Starts the server with code reloading (only development) reloader"
29
-
30
- def call(*)
31
- exec "bundle exec guard -n f -i -G .hanami.server.guardfile"
32
- end
33
- end
34
- end
35
- end
36
- end
37
-
38
- Hanami::CLI.register "generate reloader", Hanami::Reloader::CLI::Generate
39
- Hanami::CLI.register "server", Hanami::Reloader::CLI::Server