Sha256: bc453d6b2dd4d03877e03b25fad3b6586ba9f5a7c7d221a1383e7063c6f4d992

Contents?: true

Size: 946 Bytes

Versions: 55

Compression:

Stored size: 946 Bytes

Contents

module Agilibox::Monkey
  extend ActiveSupport::Concern

  class_methods do
    def prepend_instances(&block)
      m = Module.new(&block)
      send(:prepend, m)
    end

    def prepend_class(&block)
      m = Module.new(&block)
      singleton_class.send(:prepend, m)
    end

    def prepend_instance_method(name, &block)
      check_instance_method_exist!(name)

      m = Module.new
      m.send(:define_method, name, &block)
      send(:prepend, m)
    end

    def prepend_class_method(name, &block)
      check_class_method_exist!(name)

      m = Module.new
      m.send(:define_method, name, &block)
      singleton_class.send(:prepend, m)
    end

    def check_instance_method_exist!(name)
      raise "instance method `#{name}` does not exist" unless instance_methods.include?(name)
    end

    def check_class_method_exist!(name)
      raise "class method `#{name}` does not exist" unless methods.include?(name)
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
agilibox-1.11.0 app/libs/agilibox/monkey.rb
agilibox-1.10.5 app/libs/agilibox/monkey.rb
agilibox-1.10.2 app/libs/agilibox/monkey.rb
agilibox-1.10.1 app/libs/agilibox/monkey.rb
agilibox-1.10.0 app/libs/agilibox/monkey.rb
agilibox-1.9.20 app/libs/agilibox/monkey.rb
agilibox-1.9.19 app/libs/agilibox/monkey.rb
agilibox-1.9.18 app/libs/agilibox/monkey.rb
agilibox-1.9.17 app/libs/agilibox/monkey.rb
agilibox-1.9.16 app/libs/agilibox/monkey.rb
agilibox-1.9.15 app/libs/agilibox/monkey.rb
agilibox-1.9.14 app/libs/agilibox/monkey.rb
agilibox-1.9.13 app/libs/agilibox/monkey.rb
agilibox-1.9.12 app/libs/agilibox/monkey.rb
agilibox-1.9.11 app/libs/agilibox/monkey.rb
agilibox-1.9.10 app/libs/agilibox/monkey.rb
agilibox-1.9.9 app/libs/agilibox/monkey.rb
agilibox-1.9.8 app/libs/agilibox/monkey.rb
agilibox-1.9.7 app/libs/agilibox/monkey.rb
agilibox-1.9.6 app/libs/agilibox/monkey.rb