controllersデフォルトのディレクトリ ( /modelsなど)のいずれにも収まらない非標準の Ruby ファイルを Rails アプリのどこに配置するかについて、ベスト プラクティスがあるかどうか疑問に思っています。
コントローラー/モデルなどで使用されるクラスについて話していますが、Rails の基本クラスのサブクラスではありません。モデルを軽量化するためにモデルから抽出された機能を含むクラス。モデルのように見えるが AR モデルではないもの、「サービス」のように見えるもの、その中間またはその他のものなどがあります。
いくつかのランダムな例:
- Facebookなどを介したパスワードによる認証を処理する「戦略」クラス。
- パラメータをカプセル化する「XParams」オブジェクト、またはパラメータの処理を処理して複雑なアクションを実行し、最終的にいくつかの AR モデルを作成する「XCreator」オブジェクト
- 外部 API にリクエストを送信するか、それらのリクエストとレスポンスをカプセル化するクラス
- 実際の AR モデルの代わりに使用できる偽のモデル (例: ゲスト ユーザー)
- ジョブの再要求
- Redis から情報を保存および読み取るクラス
- データの処理、レポートの生成などの特定のアクションを実行し、Resque ジョブまたは rake タスクから呼び出されるクラス
私は今、これらをかなりたくさん持っています。そのうちのいくつかは追加さlibれ、最終的にランダムなクラスとモジュールの山になり、いくつかは に忍び込みますapp/models。どうにかして整理したいのですが、どこから手をつけてよいかわかりません。
AR モデルだけが に入る必要がありapp/modelsますか? それとも、ドメインやヘルパー モデルを配置しても問題ありませんか? 何かがモデルであるかどうかをどのように判断しますか?
に収まらないものはすべて に入るapp必要がありlibますか? または、いくつかの新しいカスタム サブディレクトリを に追加する必要がありappますか? サブディレクトリは何ですか? カスタム クラスを分割するにはどうすればよいですか?
プロジェクトでこれをどのように処理しますか? すべてのプロジェクトが少しずつ異なることは知っていますが、いくつかの類似点があるはずです。