Sha256: a455759557950893243cc8d216238ee60e8524162e0e8b19ea196cc9ce75bd65
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
module Ohm module Plugin def plugin(name) mixin = Plugin[name] include mixin extend mixin::ClassMethods if mixin.const_defined?(:ClassMethods, false) mixin.setup(self) if mixin.respond_to?(:setup) end def self.[](plugin) case plugin when Module plugin when Symbol name, path = Plugin.registry[plugin] raise Unknown.new(plugin) if name.nil? require path Ohm.const_get(name, false) else raise Unknown.new(plugin) end end def self.register(name, name_and_path) registry[name] = name_and_path end def self.registry @registry ||= { :callbacks => [:Callbacks, "ohm/contrib/callbacks"], :datatypes => [:DataTypes, "ohm/contrib/data_types"], :locking => [:Locking, "ohm/contrib/locking"], :scope => [:Scope, "ohm/contrib/scope"], :slug => [:Slug, "ohm/contrib/slug"], :softdelete => [:SoftDelete, "ohm/contrib/soft_delete"], :timestamping => [:Timestamping, "ohm/contrib/timestamping"] } end class Unknown < StandardError def initialize(plugin) @plugin = plugin end def message "Unknown plugin: #{@plugin}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ohm-contrib-1.0.rc1 | lib/ohm/plugin.rb |
ohm-contrib-1.0.rc0 | lib/ohm/plugin.rb |