Class: Milktea::Loader
- Inherits:
-
Object
- Object
- Milktea::Loader
- Defined in:
- lib/milktea/loader.rb
Overview
Auto loading and hot reloading implementation for Milktea applications
Instance Method Summary collapse
- #hot_reload ⇒ Object
-
#initialize(config = nil) ⇒ Loader
constructor
A new instance of Loader.
- #reload ⇒ Object
- #setup ⇒ Object
Constructor Details
Instance Method Details
#hot_reload ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/milktea/loader.rb', line 23 def hot_reload gem "listen" require "listen" @listeners = @autoload_paths.map do |path| Listen.to(path, only: /\.rb$/) do |modified, added, removed| reload if modified.any? || added.any? || removed.any? end end @listeners.each(&:start) rescue Gem::LoadError # Listen gem not available, skip file watching end |
#reload ⇒ Object
38 39 40 41 42 43 |
# File 'lib/milktea/loader.rb', line 38 def reload return unless @loader @loader.reload @runtime.enqueue(Message::Reload.new) end |
#setup ⇒ Object
16 17 18 19 20 21 |
# File 'lib/milktea/loader.rb', line 16 def setup @loader = Zeitwerk::Loader.new @autoload_paths.each { |path| @loader.push_dir(path) } @loader.enable_reloading @loader.setup end |