Переопределение метода create
для RestClient::Response
нарушило бы его первоначальную функциональность для rest-client, используемого бок о бок с вашим интерфейсом.Поскольку гем rest-client является часто используемым гемом, он не может быть тем, что вы хотели.
В такой ситуации я пишу класс-обертку, имеющий экземпляр исходного, пишу методы псевдонимов для вызова наисходный экземпляр и переопределите необходимые методы.
Псевдонимы могут быть немного короткими, используя общий метод request
, который делает send
для исходного экземпляра;тогда псевдонимы только вызывают request :method_name, *args
.
Таким образом, я обернул rest-client, чтобы он работал как простой пользовательский агент, хранящий файлы cookie, и переопределил глобальную переменную класса RestClient.proxy
перед каждым запросом.Мне нужен был и rest-client, и couchrest (couchrest, использующий сам rest-client), где я сам хотел делать запросы rest-client через прокси-сервер и делать прямые запросы от couchrest, которые мне тоже пришлось обернуть.
Я знаю, что это не изящное решение, но по своему опыту в рубине меньше года я не знаю лучшего.Возможно, кто-то покажет нам лучший вариант, я бы тоже хотел его прочитать.