module Ak
Attributes
env[RW]
root[RW]
Public Class Methods
version()
click to toggle source
# File lib/ak/version.rb, line 2 def self.version '0.0.1' end
Public Instance Methods
registry()
click to toggle source
# File lib/ak.rb, line 183 def registry @registry ||= Registry.new end
reload(path, **options)
click to toggle source
# File lib/ak.rb, line 140 def reload(path, **options) registry.load(path, options.merge(require: false)) end
reload_folders(*paths)
click to toggle source
# File lib/ak.rb, line 150 def reload_folders(*paths) get_files paths do |file| reload file, options end end
require(path, **options)
click to toggle source
Calls superclass method
# File lib/ak.rb, line 128 def require(path, **options) return super path unless development? registry.load(path, options.merge(require: true)) end
require_folders(*paths)
click to toggle source
# File lib/ak.rb, line 144 def require_folders(*paths) get_files paths do |file| require_relative file end end
require_relative(path, **options)
click to toggle source
Calls superclass method
# File lib/ak.rb, line 133 def require_relative(path, **options) return super path unless development? caller_path = File.dirname(caller_locations.first.path) path = File.expand_path(path, caller_path) registry.load(path, options.merge(require: true)) end
start()
click to toggle source
# File lib/ak.rb, line 156 def start return unless development? dirs = registry.files.map { |file| File.dirname(file.name) }.uniq filewatcher = Filewatcher.new(dirs) Thread.new(filewatcher) do |filewatcher| filewatcher.watch do |filename, event| begin puts "\n\n#{event.capitalize} #{filename.gsub("#{root}/", '')}\n\n" file = registry.find_by(:name, filename) if file file.load if event == :created file.reload if event == :updated file.unload_and_reload if event == :deleted else require(filename) end rescue Exception => e puts "\nError on event #{event}:\n#{'=' * 20}\n#{e}\n" end end end end
Private Instance Methods
development?()
click to toggle source
# File lib/ak.rb, line 194 def development? env == 'development' end
get_files(paths) { |file| ... }
click to toggle source
# File lib/ak.rb, line 189 def get_files(paths) pattern = paths.map { |path| "#{Ak.root}/#{path}/**/*" } Dir[*pattern].each { |file| yield(file) } end