1

Resque ワーカーからトリガーされたコード内のオブジェクトを操作できませんでした。これはシナトラ/データマッパー アプリです。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>>

なぜそれがハッシュになるのですか?フィード オブジェクトで inspect を呼び出すことができます。

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

期待どおりにフィードをダンプします。

** [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=

注目すべき分野はありますか?

4

1 に答える 1

1

実際には、ペアのハッシュですAddressable::URI => Feedzirra::Parser::RSSFeedBurner

そのURIオブジェクトを取得する方法がわからない場合は、feed[feed.keys[0]].descriptionまたはfeed.values[0]

また、githubリポジトリを確認すると、entriesメソッドが必要なようです。これは、ルート URL から取得している場合に発生します。feeds.entries.firstしたがって、最初のものだけを取得したい場合は、できるかもしれません。

于 2012-08-03T06:28:25.560 に答える