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

问题描述:

在Feedjira 2.0的公告博客文章中,它表示如果你想设置用户代理,那应该是一个配置选项,但目前还不清楚如何做到这一点。理想情况下,我想模仿之前在Feedjira 1.0中提供的选项,包括user_agent,if_modified_since,timeout和ssl_verify_peer。Ruby:如何设置feedjira配置选项?

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"}) 

其中配置选项被设置为从一个我所看到的仅仅是示例:

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

随着Feedjira 1.0,则可以通过使下面的调用(如所描述的here)设置这些选项comment在github上拉的要求,主要内容如下:

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

但是,当我尝试了一些类似的事情,我收到以下错误:

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

请阅读“[问]”,包括链接的页面和“[mcve]”。我们需要查看演示你所尝试的最小代码,并解释它为什么不起作用。目前你的问题很广泛。 –

它看起来像被添加到允许超时选项将被传递给fetch_and_parse功能的补丁: https://github.com/feedjira/feedjira/pull/318/commits/fbdb85b622f72067683508b1d7cab66af6303297#diff-a29beef397e3d8624e10af065da09a14

然而,直到被实时推送,一个超时和一个open_timeout选项可以通过绕过Feedjira来获取,而不是使用Faraday(或任何可以获取HTTP请求的库,比如Net :: HTTP)。您还可以设置SSL验证为假,并设置用户代理,像这样的:

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