【问题标题】:Random 'concerns' folders and '.keep' files随机的“关注”文件夹和“.keep”文件
【发布时间】:2013-07-29 15:53:59
【问题描述】:

我正在学习 Rails。

在某个地方,我注意到看似随机的文件夹和文件出现在我的 rails 应用程序目录中。在某些文件夹中有一个concerns 文件夹,里面有一个.keep 文件。 .keep 文件似乎是空的。在其他文件夹中没有concerns 文件夹,但存在一个空的.keep 文件。

有谁知道这些文件/文件夹的处理方式是什么?

【问题讨论】:

    标签: git version-control


    【解决方案1】:

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

    【讨论】:

    • 太好了,谢谢!那我应该离开他们吗?如果没有必要,我打算删除它们
    • 是的,您应该将它们放在身边,以便在您需要它们时出现。它还将确保您的版本控制系统注意到这些文件夹。
    • 我应该把它们放在我的.gitignore 中吗?我宁愿不提交空文件。
    • @tbodt 我会提交它们。不确定如果其他人要克隆您的代码库会发生什么。
    【解决方案2】:

    .keep 文件在你想用 git 提交空目录时特别有用。

    有趣的是,.keep.gitkeep 的名称毫无意义。您可以调用文件.foo 以获得相同的效果,它只是一个可读的约定。

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

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

    这是一种软件设计范式,旨在减少开发人员需要做出的决策数量,获得简单性,但不一定失去灵活性。

    【讨论】:

      【解决方案3】:

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

      我想明确指出您应该使用服务对象来提供与特定对象无关的功能。例如,一个组织有很多用户。现在组织的管理员需要为此组织导出所有用户的 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 对象,则将代码移动到服务对象。

      注意:您的问题是关于问题的,但我想添加一些额外的东西来保持代码库的清洁和可管理性,因为它可能会帮助其他程序员。上述方法值得商榷。

      【讨论】:

        猜你喜欢
        • 2017-05-08
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        相关资源
        最近更新 更多