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

时间:2013-07-21 19:59:20

标签: ruby

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

client = Restforce.new :username => 'user', :password => 'pass', :security_token => 'token', :client_id => 'client_id', :client_secret => 'client_secret'

然后致电client.query查询Salesforce。

我想创建一个名为query_with_alises的自定义方法,以便我可以调用client.query_with_aliases来执行一些自定义功能。

如果不编辑库本身的源代码,我该怎么做?

2 个答案:

答案 0 :(得分:1)

Monkey-patch一些方法 - 在ruby中你可以再次打开类并添加一些方法, 或者使用像

这样的技巧
module MyPatches
  def query_with_aliases
    # code here...
  end
end

TargetClass.send :include, MyPatches

答案 1 :(得分:1)

您可以再次打开课程并添加所需的任何方法。

虽然确切的含义是争论的问题,但这被称为猴子补丁。有些人认为猴子修补仅覆盖/重新定义现有方法(这可能有点危险),其他考虑任何类型的打开现有类并添加任何东西,即使它们是新方法。

在您的特定情况下,您可以像这样从Restforce中修补客户端类:

class Restforce::Data::Client
  def query_with_aliases

    # PUT YOUR CODE HERE

  end    
end

Client内的其他所有方法都会保持现有和正常运行,您只会添加query_with_aliases