# File lib/adhearsion/core_extensions/publishable.rb, line 6 def add(interface, name, meth) @interfaces ||= {} @interfaces[interface] ||= returning(Object.new) { |obj| obj.metaclass.send(:attr_accessor, :__methods) } obj = @interfaces[interface] obj.__methods ||= {} obj.__methods[name] = meth obj.instance_eval "def \#{name}(*args, &block)\nbegin\n__methods[\"\#{name}\"].call(*args, &block)\nrescue => exception\nraise RuntimeError, exception.message\nend\nend\n" end