随机的“关注”文件夹和“ .keep”文件


87

我正在学习Rails。

我注意到在Rails应用程序的目录中似乎有随机的文件夹和文件。在某些文件夹中,有一个concerns其中包含.keep文件的文件夹。该.keep文件似乎为空。在其他文件夹中,没有concerns文件夹,但是存在一个空.keep文件。

有谁知道如何处理这些文件/文件夹?

Answers:


132

.keep文件是0字节文件,用于阻止空文件夹被各种进程忽略。没有什么可担心的。


2
十分感谢!那我应该离开他们吗?如果没有必要,我将删除它们
Alex Vallejo

4
是的,您应该将它们放在附近,以便在需要时可以在它们那里。它还将确保您的版本控制系统注意到该文件夹​​。
2013年

我应该把它们放在我的身上.gitignore吗?我宁愿不提交空文件。
tbodt 2014年

6
@tbodt我会提交他们。不知道如果其他人克隆您的代码库会发生什么。
DickieBoy 2014年

33

当您想使用git提交空目录时,.keep文件特别有用。

有趣的是,这个名字.keep还是.gitkeep毫无意义的。你可以调用文件.foo以相同的效果,它只是一种可读的约定。

.keep文件也在那里,以帮助从一个vcs移植到另一个vcs,防止在取消合并会导致这些目录为空的重要目录时删除重要目录。

例如,考虑一个脚本试图 cd dir进入git未跟踪的目录。

它是一种软件设计范例,旨在减少开发人员需要做出的决策数量,以简化操作,但不一定会失去灵活性。


6

关注是一个简单而强大的概念。存在它是为了代码可重用性。基本上,这个想法是提取公共的和/或特定于上下文的代码块,以清理模型并避免它们变得过于繁琐和难以管理。

我想明确指定您应该使用服务对象来提供与特定对象无关的功能。例如,一个组织有许多用户。现在,组织的管理员需要为此组织导出所有用户的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生成时,您都可以在上面的类中放置该逻辑。这种方法可以使对象(在这种情况下为组织模型)免受代码的影响,而这不应该由它负责。我遵循的一般原则是:如果代码正在修改self对象,请将代码移至服务对象。

注意:您的问题是关于关注点的,但是我想添加一些其他内容,以使代码库保持干净和可管理,因为这可能会对其他程序员有所帮助。上述方法值得商de。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.