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