我正在学习rails。
在某个地方,我注意到看似随机的文件夹和文件出现在我的rails应用程序目录中。在某些文件夹中,有一个concerns
文件夹,其中包含.keep
文件。 .keep
文件似乎为空。在其他文件夹中没有concerns
文件夹,但存在空的.keep
文件。
有谁知道这些文件/文件夹的处理是什么?
答案 0 :(得分:123)
.keep
个文件是0字节文件,用于阻止空文件夹被各种进程忽略。无需担心。
答案 1 :(得分:25)
.keep文件特别有用。
有趣的是,名称.keep
或.gitkeep
毫无意义。您可以调用文件.foo
获得相同的效果,它只是一个可读的约定。
.keep
文件也可以帮助从一个vcs移植到另一个vcs,当你取消合并会导致这些目录为空的东西时,阻止删除重要目录。
例如,考虑一个尝试cd dir
进入git未跟踪的目录的脚本。
这是一种软件设计范例,旨在减少开发人员需要做出的决策数量,获得简单性,但不一定会失去灵活性。
答案 2 :(得分: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生成时,您可以在上面的类中放置该逻辑。这种方法使对象(在这种情况下,组织模型)保持清洁,不应该是不应该负责的代码。我遵循的一般原则是:如果代码修改自我对象,则将代码移动到服务对象。
注意:您的问题是关于问题,但我想添加一些额外的东西,我保持代码库清洁和可管理,因为它可能会帮助其他程序员。上述方法值得商榷。