我应该使用迁移来创建文件夹吗?

时间:2009-12-22 11:34:55

标签: ruby-on-rails ruby migration

我创建了一项功能,需要两个文件夹才能正常工作。这些文件夹在rails项目中不存在,所以我不得不创建它们。现在我需要推送这个功能,以便其他开发人员也可以使用它。

您认为最佳做法是什么:

  1. 在本地创建文件夹并在某处留言,说明需要创建这些文件夹

  2. 创建将创建这些文件夹的迁移

  3. 如果文件夹在执行时不存在,则创建

  4. 那么关于此的最佳做法是什么?

5 个答案:

答案 0 :(得分:6)

两个选择

1。将它们置于版本控制之下。

当开发人员接下来检查时,文件夹将被创建。如何将它们添加到VC取决于您正在使用的工具的性质,但许多工具要求目录包含一个文件(可能是隐藏的)。

如果文件夹位于源树中,则效果很好。您还可以在类似Unix的操作系统上从源树内软链接到源树之外的众所周知的位置。根据VC系统(我们使用Mercurial),您可以将软链接设为版本化项目。


2。在流程开始时创建它们

如果您打算这样做,您可以加倍努力,使其位置成为可配置选项。启动时,阅读配置文件,制作文件夹并继续。

答案 1 :(得分:3)

我认为作为开发构建的一部分,必须有rake任务被调用来执行某些活动;将这种活动纳入适合最合适的佣金任务是适当的。 它应该检查文件夹以及它是否不存在;只是创造它们。创建文件夹的迁移实际上并不是我认为的正确方法。

答案 2 :(得分:2)

我将其包含在bootstrap rake任务中。

答案 3 :(得分:2)

这是一个很好的问题。

对我来说,我会将文件夹创建放在迁移中,当且仅当该文件夹是迁移的一部分时才需要。因此,例如,您正在添加或更新处理附件的表(例如使用attachment_fu等),那么我会考虑将目录创建/删除放在那里。

但是,创建目录是特定于环境的事情(Windows vs * nix等不同),尤其是涉及权限的情况。因此,以环境抽象的方式处理这些问题是有意义的。也许在部署脚本中(如果使用Capistrano)或其他人在rake任务中建议。

答案 4 :(得分:0)

我会将它们添加到存储库中。也许如果它包含临时数据,我将忽略其中的内容。