如何向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
打开类并添加一个新方法?给出通常的警告很重要:不要践踏现有方法或更改其行为,尤其是核心库。