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