複数のサードパーティ API で動作する Rails アプリがあります。これらの API の一部はレート制限されており、多くのメソッドは完了するまでに数時間かかる場合があり、リクエストの準備ができているかどうかを継続的に確認する必要があります。そのため、すべての荷物を管理するためのキューイング システムを構築しました。
このキューに入る各リクエストには、リクエストが関係するサードパーティ API、メソッド、引数、およびレスポンスを処理するためのコールバックの詳細を示す JSON 文字列があります。非常に多くのコールバック メソッドが必要になり、それらは非常に異なるタスクを処理します。サード パーティのサービス ステータスを更新するものもあれば、顧客情報を更新するものもあれば、大きな CSV をダウンロードしたり CSV を解析するためにキューに入れられた別の要求を作成したりするものもあります。
これらの無関係なコールバック メソッドをどこに配置すればよいかわかりません。それらは非常に多様であり、非常に多くの異なるモデルに干渉しているため、それらを QueuedRequest モデルの下に配置するのが正しいかどうかはわかりません (ただし、特にテストに関してはそれが最も簡単に思えます)。それらを 1 つの場所に統合したいので (テストを簡単にするために)、それらを関連するモデルに押し込もうとしても (多くの場合、モデルとはまったく関連していない可能性があります)、うまくいきません。
ある種のユーティリティ クラスが最適な場所のようですが、そのファイルをどこに置くのでしょうか?
詳細: Rails 3.2.6
更新:以下の回答を詳しく説明するために、私が最終的に行ったことは、ユーティリティ メソッドのモジュールを /lib/api に配置することでした。/lib/api を /config/application.rb の autoload_paths に追加し、言及されていないのですが、モジュールをアプリにロードするための初期化子を作成しました。
/lib/api/callbacks.rb
module Callbacks
extend self
def some_method
# magic
end
end
/config/application.rb
config.autoload_paths += %W(#{config.root}/lib/api)
/config/initializers/application.rb
require 'callbacks'