hot_reloader 0.7.0 → 0.8.2

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: 9421c166738e6fafb613ca2dac2bc28bd99b53a6229d4c0720db14f2e0c0ae25
4
- data.tar.gz: a5677eaf835907fc683a591bd5e746008aa9fe42f296fa0585372482f2df92fd
3
+ metadata.gz: 60fe9c1bc640e084227e44fe285fd940790c3e4425a36a3494414eb6a6cf93d7
4
+ data.tar.gz: fbe788f0e5da017499b2780ce934e00ef27c02301aa446e3eac3991c28a93935
5
5
  SHA512:
6
- metadata.gz: 14c1d5918b46577369366f01912de5b1b61907195eedf2c182b87022c1d33796a65ec43a90efe21e72d3211b341b29a247c24383f2da499ed5a7a98116dc136b
7
- data.tar.gz: f6668adecc4df04439245a41d5b7327ec03b0f3e14b8bee313ec529b9275ebc5b57a4667d93c85e1e21118a54b33169d77765bb83eca73e8c24491eeb2091e0a
6
+ metadata.gz: 5ed01f7515b65f43cf4a07b1665de7c7bf023158ff1b2f4cca85a567cbb20d9647a0a82618c13a51d8cc81dbafcd4d0a7b1ec68a3c003e517b43558591d464e2
7
+ data.tar.gz: da50e1402b1b1410309c71d5d1290a7308f2682df1e9179980306240ce2dd3b0cb3562b1fca2a1cc8f96f2208d6d3eea31b92b0bd95be496dc1df9e99563d6e0
data/README.md CHANGED
@@ -20,21 +20,7 @@ Add to your Gemfile
20
20
 
21
21
  Following is a example for use hot_reloader with [Roda](https://github.com/jeremyevans/roda):
22
22
 
23
- `config.ru` which used to start rack based web server with `command rackup -o 0.0.0.0 -p 9393`
24
-
25
- ```rb
26
- # config.ru
27
-
28
- require_relative './config/environment'
29
-
30
- if ENV['RACK_ENV'] == 'development'
31
- run ->(env) { App.call(env) }
32
- else
33
- run App.freeze.app
34
- end
35
- ```
36
-
37
- Add loader initialize code into `config/environment.rb`
23
+ ### Add loader initialize code into `config/environment.rb`
38
24
 
39
25
  For simple use case, you just need pass paths to `HotReloader.eager_load` or `HotReloader.will_listen`.
40
26
 
@@ -112,7 +98,7 @@ newest code in `routes/blog.rb` from the Dir each loop.
112
98
 
113
99
  For achieve this, you only need pass listened folders to will_listen method as secondary arg.
114
100
 
115
- ```
101
+ ```rb
116
102
  loader = Zeitwerk::Loader.new
117
103
  loader.push_dir("#{__dir__}/../app")
118
104
 
@@ -125,7 +111,23 @@ else
125
111
  end
126
112
  ```
127
113
 
128
- Write whatever application initialize code which need add into application.rb
114
+ ### Add other app files
115
+
116
+ `config.ru` which used to start rack based web server with `command rackup -o 0.0.0.0 -p 9393`
117
+
118
+ ```rb
119
+ # config.ru
120
+
121
+ require_relative './config/environment'
122
+
123
+ if ENV['RACK_ENV'] == 'development'
124
+ run ->(env) { App.call(env) }
125
+ else
126
+ run App.freeze.app
127
+ end
128
+ ```
129
+
130
+ Write whatever application needed initialize code into config/application.rb
129
131
 
130
132
  ```rb
131
133
  # config/application.rb
@@ -177,8 +179,9 @@ For a more rich WIP sample project, please check my another project [marketbet_c
177
179
 
178
180
  ## Dependency
179
181
 
180
- zeitwerk https://github.com/fxn/zeitwerk
181
- listen https://github.com/guard/listen
182
+ [zeitwerk](https://github.com/fxn/zeitwerk) https://github.com/fxn/zeitwerk
183
+
184
+ [listen](https://github.com/guard/listen) https://github.com/guard/listen
182
185
 
183
186
  ## Contributing
184
187
 
@@ -1,5 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class HotReloader
4
- VERSION = '0.7.0'
3
+ module HotReloader
4
+ VERSION = [0, 8, 2]
5
+
6
+ class << VERSION
7
+ include Comparable
8
+
9
+ def to_s
10
+ join('.')
11
+ end
12
+ end
5
13
  end
data/lib/hot_reloader.rb CHANGED
@@ -10,10 +10,13 @@ class HotReloader
10
10
  #
11
11
  # @param [*String, Array<String>] folders Folders which should be monitor, can be multi-args or array.
12
12
  # or only one Zeitwerk::Loader object can be provided.
13
- # @param [#call] logger logger or any object should response call, e.g. method(:puts), $stdout, $stderr.
14
- # @param [Array<String>] ignore Glob patterns or Pathname object which should be excluded.
13
+ # @param [#call] logger logger object, e.g. Logger.new($stdout).
14
+ # @param [Array<String>, Array<Pathname>] ignore File names, Glob patterns or Pathname object which should be excluded for zeitwerk.
15
+ # @param [Integer] wait_for_delay Set the delay (in seconds) before call loader.reload when changes exist.
16
+ # @param [Array<Regexp>] listen_ignore The regexp pattern which don't want listen on.
17
+ # @yield [] ruby code will be run after Zeitwerk loader get reloaded.
15
18
  # @return nil
16
- def will_listen(*folders, logger: Logger.new(IO::NULL), ignore: [])
19
+ def will_listen(*folders, logger: Logger.new(IO::NULL), ignore: [], wait_for_delay: nil, listen_ignore: [])
17
20
  folders = folders.flatten
18
21
 
19
22
  if folders.first.is_a? Zeitwerk::Loader
@@ -39,7 +42,14 @@ class HotReloader
39
42
 
40
43
  Listen.logger = logger
41
44
 
42
- Listen.to(*(folders + listened_folders), wait_for_delay: 1, ignore: /\.#.*/) { loader.reload }.start
45
+ listen_options = {ignore: [/\A\.?#/]}
46
+ listen_options.merge!({wait_for_delay: wait_for_delay}) if wait_for_delay
47
+ listen_options[:ignore].concat listen_ignore if listen_ignore
48
+
49
+ Listen.to(*(folders + listened_folders), listen_options) do
50
+ loader.reload
51
+ yield if block_given?
52
+ end.start
43
53
  end
44
54
 
45
55
  # Enable autoload ruby file based on default Zeitwerk rule.
@@ -47,7 +57,8 @@ class HotReloader
47
57
  #
48
58
  # @param [*String, Array<String>] folders folders which should be autoload, can be multi-args or array.
49
59
  # or only one Zeitwerk::Loader object can be provided.
50
- # @param [#call] logger logger or any object should response call, e.g. method(:puts), $stdout, $stderr.
60
+ # @param [#call] logger logger object, e.g. Logger.new($stdout)
61
+ # @param [Array<String>, Array<Pathname>] ignore File names, Glob patterns or Pathname object which should be excluded for zeitwerk.
51
62
  # @return nil
52
63
  def eager_load(*folders, logger: Logger.new(IO::NULL), ignore: [])
53
64
  folders = folders.flatten
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hot_reloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Billy.Zheng(zw963)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-14 00:00:00.000000000 Z
11
+ date: 2022-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.3'
19
+ version: '2.5'
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.3'
26
+ version: '2.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: listen
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '3.7'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: '3.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ritual
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
41
55
  description: A dead simple ruby code hot reloader wrap around zeitwerk and listen.
42
56
  email:
43
57
  - vil963@gmail.com
@@ -68,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
82
  - !ruby/object:Gem::Version
69
83
  version: '0'
70
84
  requirements: []
71
- rubygems_version: 3.2.3
85
+ rubygems_version: 3.3.3
72
86
  signing_key:
73
87
  specification_version: 4
74
88
  summary: A dead simple ruby code hot reloader wrap around zeitwerk and listen.