Sha256: 10814979679b3e26f5d217593316ca44f58daa0b9fb1c91cb68978caf07aa67b
Contents?: true
Size: 1.35 KB
Versions: 4
Compression:
Stored size: 1.35 KB
Contents
module Puffer module Controller module Config def self.included base base.class_eval do extend ClassMethods include InstanceMethods puffer_class_attribute :group puffer_class_attribute :model_name puffer_class_attribute :destroy, true helper_method :configuration end end module InstanceMethods def configuration self.class.configuration end end module ClassMethods def puffer_class_attribute name, default = nil class_attribute "_puffer_attribute_#{name}" send "_puffer_attribute_#{name}=", default end def setup &block block.bind(Config.new(self)).call end def configuration @configuration ||= Config.new(self) end end class Config attr_accessor :controller def initialize controller @controller = controller end def method_missing method, *args, &block method_name = "_puffer_attribute_#{method}" if args.present? && controller.respond_to?("#{method_name}=") controller.send "#{method_name}=", args.first elsif controller.respond_to?(method_name) controller.send method_name end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
puffer-0.0.19 | lib/puffer/controller/config.rb |
puffer-0.0.18 | lib/puffer/controller/config.rb |
puffer-0.0.17 | lib/puffer/controller/config.rb |
puffer-0.0.16 | lib/puffer/controller/config.rb |