Ruby无法覆盖send方法

| 这有点难以解释,但有时似乎无法覆盖应用程序中的\'send \'方法。我正在基于EventMachine创建一个相当大的应用程序,有时,在我代码的深处,我决定在我的一个类中定义一个'send \'方法。以后当我尝试使用此方法时,通常会出现一个类似于
TypeError: <parameter> is not a symbol
的异常,如下所示(可能是由所需的AMQP gem(不是我的)引起的,但是这个问题更笼统):
Exception caught: TypeError - #<AMQ::Protocol::MethodFrame:0x000001008434f0 @payload=\"\\x002\\x00\\x14\\x00\\x00\\x01a\\tamq.topic\\x00\\x01\\x00\\x00\\x00\\x00\", @channel=1> is not a symbol
/Users/mlartz/.rvm/gems/ruby-1.9.2-p180@rflow-component-devel/gems/amq-client-0.7.0.alpha27/lib/amq/client/queue.rb:137:in `bind\'
/Users/mlartz/.rvm/gems/ruby-1.9.2-p180@rflow-component-devel/gems/amqp-0.8.0.rc12/lib/amqp/queue.rb:282:in `block in bind\'
/Users/mlartz/.rvm/gems/ruby-1.9.2-p180@rflow-component-devel/gems/eventmachine-1.0.0.beta.3/lib/em/deferrable.rb:47:in `call\'
/Users/mlartz/.rvm/gems/ruby-1.9.2-p180@rflow-component-devel/gems/eventmachine-1.0.0.beta.3/lib/em/deferrable.rb:47:in `callback\'
这是违规行:
@connection.send(Protocol::Queue::Bind.encode(@channel.id, @name, exchange_name, routing_key, nowait, arguments))
在这种情况下,“ 3”对象的类定义了一个“ 4”方法,该方法采用了“ 5”。但是,似乎以某种方式调用了默认的
Object#send
方法(它需要一个符号,因此是例外)。 在开发的早期,我在一个自定义类中遇到了同样的问题,可以通过将'send'方法的名称更改为'send_message \'来解决。 所以,这有点笼统,问题是,什么样的事情会干扰我在定义该对象的对象上调用自定义
send
方法的能力? 仅供参考:我在OSX上使用Ruby 1.9.2p180。     
已邀请:
不建议使用或覆盖
send
方法。 Object.send是Ruby Kernel Module中非常基本的方法。定义
Message.send
类时,我曾经遇到过严重的问题,最终使用了另一个名称,例如
Message.transmit
。在Ruby on Rails中,它是保留字。     

要回复问题请先登录注册