class Slugforge::SluginManager::Slugin
Attributes
active[RW]
active?[RW]
enabled[RW]
enabled?[RW]
gem_name[RW]
name[RW]
spec[RW]
Public Class Methods
new(name, gem_name, spec, enabled)
click to toggle source
# File lib/slugforge/slugins.rb, line 22 def initialize(name, gem_name, spec, enabled) @name, @gem_name, @enabled, @spec = name, gem_name, enabled, spec end
Public Instance Methods
activate!(config)
click to toggle source
Activate the slugin (run its defined activation method) Does not reactivate if already active.
# File lib/slugforge/slugins.rb, line 57 def activate!(config) return if active? if klass = slugin_class klass.activate(config) if klass.respond_to?(:activate) end self.active = true end
disable!()
click to toggle source
Disable a slugin. (prevents slugin from being loaded, cannot disable an already activated slugin)
# File lib/slugforge/slugins.rb, line 28 def disable! self.enabled = false end
enable!()
click to toggle source
Enable a slugin. (does not load it immediately but puts on 'white list' to be loaded)
# File lib/slugforge/slugins.rb, line 34 def enable! self.enabled = true end
load!()
click to toggle source
Load the slugin (require the gem - enables/loads the slugin immediately at point of call, even if slugin is disabled) Does not reload slugin if it's already loaded.
# File lib/slugforge/slugins.rb, line 42 def load! begin require gem_name rescue LoadError => e warn "Found slugin #{gem_name}, but could not require '#{gem_name}.rb'" warn e rescue => e warn "require '#{gem_name}' failed, saying: #{e}" end self.enabled = true end
Private Instance Methods
slugin_class()
click to toggle source
# File lib/slugforge/slugins.rb, line 72 def slugin_class name = spec.name.gsub(/^slugforge-/, '').camelize name = "Slugforge#{name}" begin name.constantize rescue NameError warn "Slugin #{gem_name} cannot be activated. Expected module named #{name}." end end