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”: