强制Gibbon Gem(或法拉第)在Heroku上使用QuotaGuard静态HTTP代理

时间:2015-11-26 07:19:03

标签: ruby-on-rails ruby heroku mailchimp faraday

完全免责声明;我不是一个强大的Ruby开发者,但我正在快速学习:)

我在Heroku dyno上设置了一个简单的Ruby脚本,用于收听我们捐赠平台的来电。

捐赠时,它会点击我的应用程序中的webhook端点,然后通过Mandrill发送捐赠收据(工作正常),并通过' upsert&更新/插入Mailchimp列表中的记录#39;美妙的长臂猿宝石的方法。

一切正常;除非当Heroku盒子出现在过去做错的IP地址时,并且Mailchimp的API会因为403(Forbidden)错误而丢失。

我已经通过Mailchimp API团队确认了这一点;他们建议使用像QuotaGuard Static之类的东西将API请求传递给Mailchimp,从而消除来自不一致(有时是不受信任的)IP地址的API调用问题。

我喜欢关于如何实现这一目标的一些建议。我可以看到Gibbon使用Faraday来处理HTTP请求,但我不是一个足够先进的Ruby开发人员来分叉代码并添加HTTP代理功能。

如果有一种全局强制法拉第呼叫使用HTTP代理(即QuotaGuard Static)的方法,那就是我正在寻找的东西。例如,法拉第的配置设置。

或许我可以对我的Procfile进行调整:

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

...这将强制出站流量通过QuotaGuard静态代理。我知道Proximo具有此功能,但它也会阻止对该应用的入站访问权限,但对此应用无效。

欣赏社区可以提供的任何想法。谢谢!

3 个答案:

答案 0 :(得分:1)

Gibbon作者在这里。您只需在Gibbon 2.2.0及更高版本中将代理值设置为代理URL即可。

答案 1 :(得分:0)

在法拉第文档(here)中,Connection类使用http_proxy环境变量中指定的代理。我从未尝试过,但查看它应该有效的源代码。

答案 2 :(得分:0)

我想提供更多信息,因为这两个答案指出我在正确的轨道上,但仍然需要我做一些挖掘。我通过首先在Heroku中添加QuotaGuard Static附加组件(每月最多250次使用免费)然后初始化Gibbon来解决这个问题:

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

以下是Gibbon文档中的相关部分:https://github.com/amro/gibbon#other