class Riffer::Rig::Loader::ExtensionSource
Attributes
tracked_files
[R]
Array[String]
@dynamic tracked_files
Public Class Methods
(cwd: String, home: String, host: Riffer::Rig::Hosts::_Host) → void
Source
# File lib/riffer/rig/loader/extension_source.rb, line 21 def initialize(cwd:, home:, host:) @cwd = cwd @home = home @host = host @tracked_files = [] @gem_extensions = [] end
@rbs cwd: String @rbs home: String @rbs host: Riffer::Rig::Hosts::_Host @rbs return: void
Public Instance Methods
(autoload: bool) → Array[Riffer::Rig::Extension]
Source
# File lib/riffer/rig/loader/extension_source.rb, line 31 def discover(autoload:) @tracked_files = [] @gem_extensions = gem_extension_files(autoload).flat_map do |file| reported(load_file(File.expand_path(file), track: false)) end @gem_extensions + reported(rig_file(home_rig_path, confirm_trust: false)) + reported(rig_file(project_rig_path, confirm_trust: true)) end
@rbs autoload: bool @rbs return: Array
() → Hash[String, Time?]
Source
# File lib/riffer/rig/loader/extension_source.rb, line 69 def file_state (@tracked_files + [home_rig_path, project_rig_path]).uniq.to_h { |path| [path, stamp(path)] } end
@rbs return: Hash[String, Time?]
() → (Array[Riffer::Rig::Extension] | String)
Source
# File lib/riffer/rig/loader/extension_source.rb, line 42 def rediscover @tracked_files.each { |path| $LOADED_FEATURES.delete(path) } @tracked_files = [] home = rig_file(home_rig_path, confirm_trust: false) return home if home.is_a?(String) project = rig_file(project_rig_path, confirm_trust: true) return project if project.is_a?(String) @gem_extensions + home + project end
@rbs return: (Array | String)
(Array[Riffer::Rig::Extension] extensions, Hash[Symbol, untyped] settings) → Array[Riffer::Rig::Extension]
Source
# File lib/riffer/rig/loader/extension_source.rb, line 57 def validated(extensions, settings) # Runtime#rebuild raises on a failing extension block. extensions.select do |extension| outcome = extension.trial(settings) next true unless outcome.is_a?(StandardError) @host.notify("Extension #{extension.name} failed to load: #{outcome.message}", level: :error) false end end