RailsコントローラーとResqueワーカーがいます。どちらもいくつかの機能を共有しています。DRYの原則とRailsの規則に従うために、これらの関数をどこに配置すればよいですか?
2 に答える
私には、これはサービスレイヤーの良い例のように思えます。私の同僚の1人がコンセプトの素晴らしい要約を書きました:http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/
ドメイン駆動設計では、Evansは、モデル内でスタンドアロンのインターフェイスとして提供される操作としてサービスを定義します。言い換えれば、サービスは行動であり、物ではありません。また、操作を既存のオブジェクトに強制するのではなく、別のステートレスサービスにカプセル化する必要があります。
..。
ドメインサービスは、複数のドメインオブジェクトを含むユースケースをスクリプト化します。このロジックをドメインオブジェクトに強制するのは厄介です。これらのユースケースには、単一のオブジェクトの責任外のルールが含まれることが多いためです。
サービスレイヤーは、他の多くのWebアプリMVCフレームワークの一般的な機能であり、ファットモデルが問題のドメインで責任の適切なカプセル化を提供しない場合に多くのRailsアプリケーションが使用することを選択します。
もっと詳しく知らなければ、もっと具体的な答えを出すことはできません。次のステップは、このサービスの名前を検討することです。私たちの名前の付いたものを作るのは工場ですか?名前を付けることができる特定の役割を果たしていますか?
これらの方法が実際に何をするかにもより/lib
ますが、良い場所かもしれません。