ここでFeedzirraの周りに頭を悩ませようとしています。
私はそれをすべてセットアップし、すべてを持っており、結果や更新を取得することさえできますが、何か奇妙なことが起こっています。
私は次のコードを思いついた:
def initialize(feed_url)
@feed_url = feed_url
@rssObject = Feedzirra::Feed.fetch_and_parse(@feed_url)
end
def update_from_feed_continuously()
@rssObject = Feedzirra::Feed.update(@rssObject)
if @rssObject.updated?
puts @rssObject.new_entries.count
else
puts "nil"
end
end
そうです、私が上でやっていることは、大きなフィードから始めて、それからアップデートを取得することだけです。更新を取得して同じインスタンス変数に格納できたとしても、最初は二度と取得できないので、私は愚かなことをしているに違いないと確信しています。
明らかにこれは、インスタンス変数を更新のみで上書きし、完全なフィードオブジェクトを失ったために発生します。
次に、コードを次のように変更することを考えました。
def update_from_feed_continuously()
feed = Feedzirra::Feed.update(@rssObject)
if feed.updated?
puts feed.new_entries.count
else
puts "nil"
end
end
まあ、私は何も上書きしていません、そしてそれは正しく行く方法であるはずですか?
間違っています。これは、常に同じ静的フィードオブジェクトの更新を取得しようとする運命にあることを意味します。変数の更新を取得しても、実際には「静的フィードオブジェクト」を更新することはなく、新しく追加されたアイテムは次のようになります。理論的には新しいので、私の「feed.new_entries」に追加しました。
私は確かにここで一歩を逃していますが、誰かが私に光を当てることができれば本当にありがたいです。私はこのコードを何時間も経験していて、それを理解することができません。
私が次のようなことをした場合、明らかにそれはうまくいくはずです:
if feed.updated?
puts feed.new_entries.count
@rssObject = initialize(@feed_url)
else
これは、インスタンス変数を新しいフィードオブジェクトで再初期化し、更新が再度行われるためです。
しかし、それはまた、その瞬間に追加された新しい更新が失われることを意味し、また、物事を再度ロードする必要があるため、大規模な過剰殺害も失われます。
前もって感謝します!