【问题标题】:Pass arbitrary connection options to Farday将任意连接选项传递给法拉第
【发布时间】:2013-05-14 14:27:02
【问题描述】:

我正在尝试将我拥有的项目从使用 Excon 转换为带有 Excon 适配器的 Faraday,但我没有任何运气。

问题是我需要将一些任意连接选项传递给Excon,因为我与之交互的 API 使用客户端 SSL 证书进行身份验证。

为了与直 Excon 建立联系,我使用了这个:

@connection = Excon.new("some_url", client_cert: File.expand_path(@some_cert), client_key: File.expand_path(@some_key))

根据法拉第文档,我应该可以做这样的事情:s

@connection = Faraday::Connection.new(url: "some_url", client_cert: File.expand_path(@some_cert), client_key: File.expand_path(@some_key)) do |faraday|
  faraday.adapter :excon
end

当我尝试这样做时(使用来自 Github 的 0.9 RC5),我收到一个 undefined method client_cert= 错误,这让我相信文档已经过时了。有人知道如何将任意连接选项传递给适配器吗?

【问题讨论】:

    标签: ruby faraday


    【解决方案1】:

    您必须将 SSL 选项作为哈希值传递。这应该有效:

    ssl_opts = {
      client_cert: File.expand_path(@some_cert),
      client_key: File.expand_path(@some_key)
    }
    @connection = Faraday::Connection.new(url: "some_url", ssl: ssl_opts) do |faraday|
      faraday.adapter :excon
    end
    

    This gist 有更多使用 SSL 和 Faraday 的示例。

    【讨论】:

    • 不幸的是,这仍然行不通。 ssl 选项不会传递到 excon 适配器。基本上我放什么都没关系,这里没有任何东西进入connection_options:github.com/lostisland/faraday/blob/master/lib/faraday/adapter/…似乎这可能是法拉第的一个错误......
    • 这实际上是 Faraday 中的一个错误,但我提出了一个拉取请求,该请求将按照描述实现这一点。因此,虽然目前还不是正确答案,但应该不会太久。
    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2013-11-27
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多