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

时间:2016-11-15 18:33:15

标签: ruby rubygems feedzirra feedjira

在Feedjira 2.0公告博客文章中,它说如果你想设置用户代理,那应该是一个配置选项,但目前还不清楚如何做到这一点。理想情况下,我想模仿之前在Feedjira 1.0中提供的选项,包括user_agent,if_modified_since,timeout和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 pull请求中的comment,如下所示:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

但是,在推送之前,可以通过绕过Feedjira进行提取并使用法拉第(或任何可以获取HTTP请求的库,如Net :: HTTP)来传递超时和open_timeout选项。您还可以将ssl verify设置为false,并设置用户代理,例如:

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"的方法,但如果我这样做,我会更新答案。