プロジェクト

全般

プロフィール

バグ #932

完了

periodイベントが2回発火している

Osamu Koga さんが約8年前に追加. 7年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:

説明

以下のプラグインをインストールして試した所、on_periodが連続して2回実行されていました。間隔は1分のようです。

Plugin.create :period_test do
  on_period do
    puts Time.now
  end
end

関連するチケット

関連している バグ #916: 定期的にfollowアクティビティが大量に生成される終了toshi_a 初音操作

Osamu Koga さんが約8年前に更新

  • 関連している バグ #916: 定期的にfollowアクティビティが大量に生成される を追加

Satoshi Okuno さんが7年以上前に更新

  • 担当者Osamu Koga にセット

http://moguno.hatenablog.jp/entry/2015/03/28/161212

on_periodはアカウントごとに発生するので、アカウント関係なく1分周期を作りたいならば下記記述が良いとおもいます。

  on_period { |service|
    if service == Service.primary
      # やりたいこと
    end
  }

(貴意外していたらすみませんがコメントお願いします。)

Osamu Koga さんが7年以上前に更新

  • ステータス新規 から レビュー待ち に変更
  • 担当者Osamu Koga から toshi_a 初音 に変更

既知の問題だったんですね。この現象自体は #916 を追っているときに気づいただけで、フォローイベント大量生成と関連があるかと思っていたのですが、結局別々の問題だったようです。
今の挙動はイベント名とうまく噛み合ってない気がしますが、それぞれのServiceだけにイベントを送るようにするのも簡単ではなさそうですし、World対応で色々変わりそうなので、とりあえずは放置しておくのが良さそうですね。

toshi_a 初音 さんが7年以上前に更新

名前が適切でないという問題はそうなんですが、当初このイベントは一定時間ごとにホームTLやMentionをポーリングするために用意されたものでした。なのでService毎に呼ばれるのは自然なのですが、mikutter 3.0までそのことを忘れていたmikutter作者が、periodを毎分の定期実行のために利用するという誤用を流布しており、厳しい状態です。
Worldの実装が進んできて、periodはすべてのServiceではなく、Twitter Worldの数だけ呼び出すという風にしないと互換性が取れないことが分かってきています。
いっそ実行間隔などを設定できるなどの改良をした仕組みを用意したほうがいいかなとぼんやり考えていたのですが、このチケットを見てperiodは禍根になりそうという気持ちを新たにしました。イメージとしては

timer 1, :minute do
  # 1分毎
end

みたいなのが使いやすいかなと思ってたんですが、まだいろいろ考えている段階なので、こんなこともやりたい、といった要望を上げてもらえば、考慮するかもしれません。今は無理なので後で新たにチケット作ると思いますが、先に意見があればここにどうぞ

toshi_a 初音 さんが7年以上前に更新

  • ステータスレビュー待ち から 終了 に変更

本題は解決しているので、closeします

他の形式にエクスポート: Atom PDF