ランダムな「懸念事項」フォルダと「.keep」ファイル


87

私はレールを学んでいます。

どこかで、一見ランダムなフォルダーとファイルがRailsアプリのディレクトリに表示されていることに気づきました。一部のフォルダにはconcerns.keepファイルが含まれているフォルダがあります。.keepファイルが空であるように思われます。他のフォルダにはフォルダはありませんconcernsが、空の.keepファイルがあります。

これらのファイル/フォルダの扱いを知っている人はいますか?

回答:


132

.keepファイルは、空のフォルダがあらゆる種類のプロセスによって無視されるのを防ぐために存在する0バイトのファイルです。心配することはありません。


2
まことにありがとうございます!だから私はそれらを残す必要がありますか?必要がなければ削除するつもりだった
Alex Vallejo 2013

5
はい、必要なときにそこにあるように、それらを保持する必要があります。また、バージョン管理システムによってフォルダが認識されるようになります。
Josh

私はそれらを私の中に入れるべき.gitignoreですか?空のファイルをコミットしたくありません。
tbodt 2014年

7
@tbodt私はそれらをコミットします。他の誰かがあなたのコードベースのクローンを作成した場合にどうなるかわかりません。
DickieBoy 2014年

33

.keepファイルは、gitを使用して空のディレクトリをコミットする場合に特に役立ちます。

面白い事実、名前.keepまたは.gitkeep無意味です。.foo同じ効果のためにファイルを呼び出すことができますが、それは単に読みやすい規則です。

.keepファイルは時にこれらのディレクトリが空であることを原因となります非併合何か重要なディレクトリの削除を防止し、1 VCSから別の援助Portageに存在でもあります。

たとえば、cd dirgitによって追跡されていないディレクトリに移動しようとするスクリプトについて考えてみます。

これはソフトウェア設計パラダイムであり、開発者が行う必要のある決定の数を減らし、単純さを増しますが、必ずしも柔軟性を失うわけではありません。


6

懸念事項は単純ですが強力な概念です。コードの再利用のために存在します。基本的に、アイデアは、モデルをクリーンアップし、モデルが太くなりすぎて管理できなくなるのを防ぐために、コードの一般的なチャンクやコンテキスト固有のチャンクを抽出することです。

特定のオブジェクトに関係のない機能を提供するには、サービスオブジェクトを使用する必要があることを明示的に指定したいと思います。たとえば、組織には多くのユーザーがいます。ここで、組織の管理者は、この組織のすべてのユーザーのCSVをエクスポートする必要があります。このコードは組織モデルに配置できますが、組織オブジェクトの責任ではないため、このコードは、uが組織オブジェクトを渡すだけで、すべてのユーザーの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生成が必要なときはいつでも、uは上記のクラスのそのロジックに配置できます。このアプローチにより、オブジェクト(この場合は組織モデル)が、その責任を負わないコードからクリーンに保たれます。私が従う一般的な原則は、コードが自己オブジェクトを変更している場合、コードをサービスオブジェクトに移動することです。

注:あなたの質問は懸念事項に関するものでしたが、他のプログラマーに役立つ可能性があるため、コードベースをクリーンで管理しやすい状態に保つために、私が従うものをいくつか追加することを考えました。上記のアプローチは議論の余地があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.