class Kaiser::Plugin
To implement a Kaiser
plugin you must inherit from this class. For example,
class MyPlugin < Plugin def on_init puts 'My plugin is loaded!' end end
Then in your Kasierfile
plugin :my_plugin
Plugins
has access the Kaiserfile
DSL. For example,
class Ruby < Plugin def on_init attach_mount 'Gemfile', '/usr/app/Gemfile' attach_mount 'Gemfile.lock', '/usr/app/Gemfile.lock' end end
Public Class Methods
all_plugins()
click to toggle source
# File lib/kaiser/plugin.rb, line 46 def self.all_plugins @all_plugins ||= {} end
inherited(plugin)
click to toggle source
# File lib/kaiser/plugin.rb, line 35 def self.inherited(plugin) # underscore class name name = plugin.to_s.split('::').last .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .gsub(/([a-z])(\d)/, '\1_\2') .tr('-', '_').downcase Plugin.all_plugins[name.to_sym] = plugin end
loaded?(name)
click to toggle source
# File lib/kaiser/plugin.rb, line 31 def self.loaded?(name) Plugin.all_plugins.key?(name) end
new(kaiserfile)
click to toggle source
# File lib/kaiser/plugin.rb, line 27 def initialize(kaiserfile) @kaiserfile = kaiserfile end
Public Instance Methods
method_missing(method_sym, *arguments, &block)
click to toggle source
# File lib/kaiser/plugin.rb, line 54 def method_missing(method_sym, *arguments, &block) # rubocop:disable all @kaiserfile.send(method_sym, *arguments, &block) end
on_init()
click to toggle source
# File lib/kaiser/plugin.rb, line 50 def on_init raise 'Please implement #on_init' end