Class: Kaiser::Plugin
- Inherits:
-
Object
- Object
- Kaiser::Plugin
- Defined in:
- lib/kaiser/plugin.rb
Overview
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
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(kaiserfile) ⇒ Plugin
constructor
A new instance of Plugin.
-
#method_missing(method_sym, *arguments, &block) ⇒ Object
rubocop:disable all.
- #on_init ⇒ Object
Constructor Details
#initialize(kaiserfile) ⇒ Plugin
Returns a new instance of Plugin.
27 28 29 |
# File 'lib/kaiser/plugin.rb', line 27 def initialize(kaiserfile) @kaiserfile = kaiserfile end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_sym, *arguments, &block) ⇒ Object
rubocop:disable all
58 59 60 |
# File 'lib/kaiser/plugin.rb', line 58 def method_missing(method_sym, *arguments, &block) # rubocop:disable all @kaiserfile.send(method_sym, *arguments, &block) end |
Class Method Details
.all_plugins ⇒ Object
50 51 52 |
# File 'lib/kaiser/plugin.rb', line 50 def self.all_plugins @all_plugins ||= {} end |
.inherited(plugin) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kaiser/plugin.rb', line 35 def self.inherited(plugin) super puts "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) ⇒ Boolean
31 32 33 |
# File 'lib/kaiser/plugin.rb', line 31 def self.loaded?(name) Plugin.all_plugins.key?(name) end |
Instance Method Details
#on_init ⇒ Object
54 55 56 |
# File 'lib/kaiser/plugin.rb', line 54 def on_init raise 'Please implement #on_init' end |