6

rails3 をテストする非常に単純なセットアップがありますActiveSupport::Notifications。ドキュメントを読むことにより、ActiveSupport::Notifications.subscribeビットはその操作を非同期で実行する必要があります。どうやらそうではないようです。

例:

ActiveSupport::Notifications.subscribe "some.channel" do |name, start, finish, id, payload|
  # do expensive task
  sleep(10)
end

ActiveSupport::Notifications.instrument "some.channel" #=> will return 10 seconds later

ActiveSupport::Notifications.instrument "some.channel"私はすぐに戻ってきて、高価な仕事に高価なことをさせてくれるという印象を受けました. それ以外の場合は、サブスクライバーを使用せずに、高価なタスクを直接呼び出すことができます。

ドキュメントには、複数のサブスクライバーが存在する可能性があることも記載されています。その場合、他のすべてのサブスクライバーがコードを実行するまでブロックされます。

これは正しいですか?もしそうなら、誰かがhttp://api.rubyonrails.org/classes/ActiveSupport/Notifications.htmlのこの行が何を意味するのか説明してもらえますか?

The block will be called asynchronously whenever someone instruments “render”:

4

1 に答える 1

14
于 2013-05-21T06:30:10.387 に答える