私はレールを学んでいます。
どこかで、一見ランダムなフォルダーとファイルが私の Rails アプリのディレクトリに表示されていることに気付きました。一部のフォルダーにはconcerns
、.keep
ファイルが含まれるフォルダーがあります。.keep
ファイルが空のようです。他のフォルダにはフォルダはありませんconcerns
が、空の.keep
ファイルが存在します。
これらのファイル/フォルダーの扱いを知っている人はいますか?
私はレールを学んでいます。
どこかで、一見ランダムなフォルダーとファイルが私の Rails アプリのディレクトリに表示されていることに気付きました。一部のフォルダーにはconcerns
、.keep
ファイルが含まれるフォルダーがあります。.keep
ファイルが空のようです。他のフォルダにはフォルダはありませんconcerns
が、空の.keep
ファイルが存在します。
これらのファイル/フォルダーの扱いを知っている人はいますか?
.keep
ファイルは、空のフォルダーがあらゆる種類のプロセスによって無視されるのを防ぐために存在する 0 バイトのファイルです。心配する必要はありません。
懸念は単純ですが強力な概念です。コードの再利用性のために存在します。基本的には、モデルをクリーンアップし、モデルが肥大化して管理不能になるのを避けるために、コードの一般的なチャンクおよび/またはコンテキスト固有のチャンクを抽出するという考え方です。
特定のオブジェクトに関係のない機能を提供するには、サービス オブジェクトを使用する必要があることを明示的に指定したいと思います。たとえば、組織には多くのユーザーがいます。ここで、組織の管理者は、この組織のすべてのユーザーの CSV をエクスポートする必要があります。このコードは組織モデルに配置できますが、組織オブジェクトの責任ではないため、このコードは組織オブジェクトを渡すだけのクラスに配置する必要があり、すべてのユーザーの CSV を返します。
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
CSV 生成が必要なときはいつでも、上記のクラスにそのロジックを配置できます。このアプローチにより、オブジェクト (この場合は組織モデル) が責任を負うべきではないコードからクリーンに保たれます。私が従う一般的な原則は次のとおりです。コードが自己オブジェクトを変更している場合は、コードをサービス オブジェクトに移動します。
注: あなたの質問は懸念事項に関するものでしたが、他のプログラマーの助けになるかもしれないので、コード ベースをクリーンで管理しやすい状態に保つために、いくつかの追加事項を追加することを考えました。上記のアプローチは議論の余地があります。