0

config ディレクトリにイニシャライザがあります。これは次のようなものです。

ActiveSupport::Notifications.subscribe "handle_translation_event" do |name, start, finish, id, payload|
  puts "Called"
end

Rails 開発サーバーを実行してrails sおり ( )、並行して Rails コンソールを起動しています ( rails c)。Rails コンソールで、次のように書いたとします。

ActiveSupport::Notifications.instrument("handle_translation_event")

これがサーバー ログに反映されているのを確認できません。コンソールからイベントをトリガーして、サーバーに影響を与えることはできますか? 私の推測ではノーです。

4

1 に答える 1

1

ActiveSupport::Notificationsclass を notifier として使用しActiveSupport::Notifications::Fanoutて、サブスクライバーに通知します。

このノーティファイアは、単純なインスタンス変数を使用してサブスクライバーを格納します。

notifier独自の実装を (データベースに基づくソリューションを使用して) 作成し、 の属性を設定することで実際の通知機能を実装に設定できますActiveSupport::Notifications

ActiveSupport::Notifications.notifier = my_implementation

パブリッシュ/サブスクライブ機能があるため、単純なRedisでサポートされた実装を想像できます。ただし、依存関係として Redis がない場合は、SQL でも実行できます。

于 2012-08-31T11:26:18.010 に答える