2013-07-21 3 views
0

Я использую библиотеку Restforce для выполнения некоторых запросов Salesforce. Для запросов, я обычно делаю следующее:Как добавить настраиваемый метод в библиотеку Ruby?

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, чтобы выполнить некоторые пользовательские функции.

Как бы это сделать без редактирования исходного кода самой библиотеки?

+0

Открыть класс и добавить новый метод? – jozefg

ответ

1

Вы можете просто открыть класс снова и добавить любой метод, который вы хотите.

Хотя точное значение является предметом обсуждения, это называется Обезьяна-исправление. Некоторые считают, что обезьяна-исправление только переопределяет/переопределяет существующие методы (что может быть опасным), другие считают, что любые открытия существующих классов и добавление чего-либо, даже если это новые методы.

В вашем конкретном случае, вы можете обезьяна патч класса Client с Restforce так:

class Restforce::Data::Client 
    def query_with_aliases 

    # PUT YOUR CODE HERE 

    end  
end 

Любой другой метод внутри Client сохранит существующие и функционирование, и вы будете только добавить query_with_aliases.

1

обезьяны патч некоторые методы - в рубин вы можете открыть класс снова и добавить некоторые методы, или использовать какую-то технику, как

 
module MyPatches 
    def query_with_aliases 
    # code here... 
    end 
end 

TargetClass.send :include, MyPatches 
+2

Важно дать обычные предупреждения: Не топайте по существующим методам или не изменяйте их поведение, особенно в основных библиотеках. –

Смежные вопросы