Ruby: 如何设置feedjira配置选项?

Ruby: How to set feedjira configuration options?

在Feedjira 2.0公告博客post中说,如果要设置用户代理,那应该是一个配置选项,但不清楚如何操作。理想情况下,我想模仿 Feedjira 1.0 之前提供的选项,包括 user_agent、if_modified_since、超时和 ssl_verify_peer.

http://feedjira.com/blog/2014/04/14/thoughts-on-version-two-point-oh.html

使用 Feedjira 1.0,您可以通过进行以下调用(如 here 所述)来设置这些选项:

feed_parsed = Feedjira::Feed.fetch_and_parse("http://sports.espn.go.com/espn/rss/news", {:if_modified_since => Time.now, :ssl_verify_peer => false, :timeout => 5, :user_agent => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"})

我看到的唯一设置配置选项的示例来自 github 拉取请求中的 comment,如下所示:

Feedjira::Feed.configure do |faraday|
    faraday.request :user_agent, app: "MySite", version: APP_VERSION
end

但是当我尝试类似的操作时,我收到了以下错误:

undefined method `configure' for Feedjira::Feed:Class

似乎添加了补丁以允许将超时选项传递给 fetch_and_parse 函数: https://github.com/feedjira/feedjira/pull/318/commits/fbdb85b622f72067683508b1d7cab66af6303297#diff-a29beef397e3d8624e10af065da09a14

但是,在它被推送之前,可以通过绕过 Feedjira 来获取超时和 open_timeout 选项,而不是使用 Faraday(或任何可以获取 HTTP 请求的库,比如 Net::HTTP).也可以设置ssl verify为false,设置user agent,比如这样:

require 'feedjira'
require 'pp'

url = "http://www.espn.com/espnw/rss/?sectionKey=athletes-life"

conn = Faraday.new :ssl => {:verify => false}
response = conn.get do |request|
    request.url url
    request.options.timeout = 5
    request.options.open_timeout = 5
    request.headers = {'User-Agent' => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"}
end
feed_parsed = Feedjira::Feed.parse response.body
pp feed_parsed.entries.first

我还没有找到检查 "if_modified_since" 的方法,但如果有,我会更新答案。