Sha256: 59dd5f45ff4473acc374b37233cba36bb90a976e4a04a48661f056772846f456
Contents?: true
Size: 756 Bytes
Versions: 4
Compression:
Stored size: 756 Bytes
Contents
# encoding: utf-8 require "active_support/concern" module Ghostable extend ActiveSupport::Concern module ClassMethods def ghost_method(pattern, basename, &ghost_block) define_method basename do |method_name, *args, &block| self.class.class_eval {ghost_block.call(method_name, *args, &block)} end @patterns ||= {} @patterns[basename] = pattern tmp_patterns = @patterns.dup define_method :get_patterns do tmp_patterns end end end def method_missing(method_name, *args, &block) get_patterns.each do |basename, pattern| return method(basename).call(method_name, *args, &block) if method_name.to_s.match /#{pattern}/ end super end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
tbpgr_utils-0.0.9 | lib/ghostable.rb |
tbpgr_utils-0.0.8 | lib/ghostable.rb |
tbpgr_utils-0.0.7 | lib/ghostable.rb |
tbpgr_utils-0.0.6 | lib/ghostable.rb |