在Resque worker调用的代码中,为什么对象是哈希?

时间:2012-08-03 06:16:27

标签: ruby resque feedzirra

我无法使用Resque工作人员触发的代码中的对象。这是一个sinatra / datamapper应用程序。 Feed类是DataMapper模型。这是订阅者代码

class Subscriber
  @queue = :subscriptions_queue

  def self.perform(feed_id)
    feed = Feed.get(feed_id)
    feed.subscribe()
  end
end

运行良好,直到subscribe()方法执行

class Feed
  def subscribe    
    feed = Feedzirra::Feed.fetch_and_parse(url)
    raise feed.description
  end
end

导致错误:

** [23:09:44 2012-08-02] 32028: (Job{subscriptions_queue} | Subscriber | [2]) failed: #<NoMethodError: undefined method `description' for #<Hash:0x007fa6f4b97e48>>

为什么这是哈希?我可以在feed对象上调用inspect:

class Feed
  def subscribe    
    feed = Feedzirra::Feed.fetch_and_parse(url)
    raise feed.inspect
  end
end

按照预期转储Feed:

** [23:01:31 2012-08-02] 32010: (Job{subscriptions_queue} | Subscriber | [2]) failed: #<RuntimeError: {#<Addressable::URI:0x3fefd45f2fb8 URI:http://feeds.feedburner.com/scoutapp>=>#<Feedzirra::Parser::RSSFeedBurner:0x007fdfaa024f18 @title="Scout ~ The Blog", @url="http://blog.scoutapp.com/", @description="Scout ~ The Blog", @hubs=["http://pubsubhubbub.appspot.com/"], @entries=

查看要查看的任何区域?

1 个答案:

答案 0 :(得分:1)

它实际上是一对Addressable::URI => Feedzirra::Parser::RSSFeedBurner

的哈希

如果您不知道如何获取该URI对象,请执行feed[feed.keys[0]].descriptionfeed.values[0]

同样检查github repo似乎你应该有一个entries方法。如果您从根URL获取,则会发生这种情况。如果您只想获得第一个,那么您可以feeds.entries.first