如何向Ruby库添加自定义方法?

如何向Ruby库添加自定义方法?,ruby,Ruby,我正在使用Restforce库执行一些Salesforce查询。要进行查询,我通常会执行以下操作: client = Restforce.new :username => 'user', :password => 'pass', :security_token => 'token', :client_id => 'client_id', :client_secret => 'client_secret' 然后调用client.query查询Salesforce 我

我正在使用
Restforce
库执行一些Salesforce查询。要进行查询,我通常会执行以下操作:

client = Restforce.new :username => 'user', :password => 'pass', :security_token => 'token', :client_id => 'client_id', :client_secret => 'client_secret'
然后调用
client.query
查询Salesforce

我想创建一个名为
query\u和\u alises
的自定义方法,这样我就可以调用
client.query\u和\u别名来执行一些自定义功能


在不编辑库本身的源代码的情况下,我如何做到这一点?

Monkey patch一些方法-在ruby中,您可以再次打开类并添加一些方法, 或者使用一些技巧,比如

module MyPatches def query_with_aliases # code here... end end TargetClass.send :include, MyPatches 模块MyPatches def query_带有_别名 #代码在这里。。。 结束 结束 TargetClass.send:包括,MyPatches
您只需再次打开该类并添加所需的任何方法

虽然确切的含义仍有争议,但这被称为“猴子打补丁”。有些人认为猴子修补只重写/重新定义现有的方法(这可能是危险的),其他考虑任何打开现有类和添加任何东西,即使它们是新的方法。< /P> 在您的特定情况下,您可以像这样从Restforce获得monkey patch客户端类:

class Restforce::Data::Client
  def query_with_aliases

    # PUT YOUR CODE HERE

  end    
end

Client
中的每一个其他方法都将保持现有和正常运行,您只需添加带有别名的
query\u

打开类并添加一个新方法?给出通常的警告很重要:不要践踏现有方法或更改其行为,尤其是核心库。