saturnflyer/behavioral

View on GitHub
lib/behavioral.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "behavioral/version"

module Behavioral
  def with_behaviors(*mods)
    Array(mods).each do |mod|
      mod.instance_methods.each do |meth|
        instance_exec(meth, mod.instance_method(meth)){|m, unbound_method|
          define_singleton_method m, unbound_method
        }
      end
    end
    self
  end
  
  def without_behaviors(*mods)
    Array(mods).each do |mod|
      mod.instance_methods.each do |meth|
        singleton_class.send(:remove_method, meth) if singleton_methods.include?(meth)
      end
    end
    self
  end
end