2015-11-26 3 views
1

Полный отказ от ответственности; Я не сильный Ruby dev, но я учусь быстро :)Принуждение Gibbon Gem (или Faraday) использовать QuotaGuard Статический HTTP-прокси на Heroku

Я установил простой скрипт Ruby на дирижер Heroku, который слушает звонки с нашей платформы для пожертвований.

Когда пожертвование сделано, оно попадает в конечную точку webhook в моем приложении, которое затем отправляет квитанцию ​​пожертвования через Mandrill (что прекрасно работает) и обновляет/вставляет запись в список Mailchimp с помощью метода «upsert» чудесного жемчужина Гиббона.

Что все работает нормально; за исключением случаев, когда в коробке Heroku появляется IP-адрес, который в прошлом делал что-то плохое, а API Mailchimp падает с 403 (Forbidden) ошибкой.

У меня это было подтверждено командой API Mailchimp; они предлагают использовать что-то вроде QuotaGuard Static для туннелирования запросов API на Mailchimp, устраняя проблему вызовов API от непоследовательных (а иногда и ненадежных) IP-адресов.

Мне хотелось бы посоветовать, как это сделать. Я вижу, что Gibbon использует Faraday для обработки HTTP-запросов, но я недостаточно продвинутый Ruby-dev для разворачивания кода и добавления функций HTTP-прокси.

Если есть способ глобально заставить вызовы Фарадея использовать прокси-сервер HTTP (то есть QuotaGuard Static), это то, что я ищу. Например, настройка конфигурации для Faraday.

Или, возможно, есть твик я могу сделать, чтобы мой PROCFILE:

web: bundle exec ruby webhooks.rb -p $PORT 

... что заставит исходящий трафик идти через QuotaGuard Static прокси. Я знаю, что Proximo имеет эту функцию, но также блокирует входящий доступ к приложению, который не работает для этого приложения.

Оцените любые идеи, которые может предложить сообщество. Благодаря!

+0

@ marco-sandrini - Я чувствую себя немного глупо, чтобы не работать, но ... Я взволнован, что это было легко исправить. Спасибо! – petjb

+0

Я счастлив, что смогу помочь! –

ответ

0

Из документации Фарадея (here) класс Connection использует прокси-сервер, указанный в переменной окружения http_proxy. Я никогда не пробовал, но, глядя на исходный код, он должен работать.

1

Gibbon Автор здесь. Вы можете просто установить значение прокси для URL-адреса прокси-сервера в Gibbon 2.2.0 и более поздних версиях.

+0

Hi @Amro - извините, меня не было в отпуске. Спасибо за подсказку, и ** удивительный жемчужина. Мы используем его кучу :) – petjb

0

Я хотел предоставить немного больше информации, так как два ответа указывали мне на правильный трек, но все же требовали от меня копания. Я решил эту проблему, добавьте сначала QuotaGuard Static надстройку в Heroku (бесплатно до 250 использований в месяц), а затем инициализирует Гиббон ​​так:

g = Gibbon::Request.new 
g.proxy = ENV["QUOTAGUARDSTATIC_URL"] 

А вот соответствующий раздел из документации Гиббона: https://github.com/amro/gibbon#other

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

  • Нет связанных вопросов^_^