2009-12-22 93 views
1

我創建了一個需要兩個文件夾才能正常工作的功能。這些文件夾在rails項目中不存在,所以我必須創建它們。現在我需要推送此功能,以便其他開發人員也可以使用它。我應該使用遷移來創建文件夾嗎?

你認爲什麼是最好的做法:

  1. 本地創建的文件夾,並留下一張紙條的地方解釋說,這些文件夾需要創建

  2. 創建遷移,將創建這些文件夾

  3. 創建文件夾,如果執行不存在,

那麼最佳做法是什麼?

回答

6

兩種選擇

1.把它們放在版本控制之下。

當開發人員下次檢出文件夾時就會創建。如何將它們添加到VC取決於您使用的工具的性質,但許多工具要求目錄包含一個文件(可能隱藏)。

如果這些文件夾位於源代碼樹中,那麼這很有效。您還可以在類似Unix的操作系統上從源代碼樹中軟鏈接到源樹之外的衆所周知的位置。根據VC系統(我們使用Mercurial),您可以使軟鏈接成爲一個版本化的項目。


2。創建它們作爲你的進程開始

如果你要做到這一點,你還不如去加倍努力,使他們的位置的配置選項。在啓動時,閱讀配置文件,製作文件夾並繼續。

+0

這是我們做的正確方法。它只適用於版本控制下的目錄樹(例如不在/ tmp或其他)中,但如果它們很好。我們使用placeholder.txt作爲強制文件強制存在該目錄。 – edebill 2009-12-22 20:45:36

+0

如果使用git,你可以添加一個空白的.gitignore文件到你想保留的目錄。 – Daemin 2009-12-23 01:31:07

+0

@Deamin,這是否真的存儲目錄或只是不抱怨它不知道它是什麼? 我問,因爲Mercurial會忽略目錄,而不是檢查它。 – 2009-12-23 09:49:41

0

我會將它們添加到存儲庫。也許如果它保存臨時數據,我會忽略這些內容。

+0

我不能這樣做,因爲它取決於環境。對不起,我沒有在這個問題上說 – marcgg 2009-12-22 11:49:52

3

我認爲作爲開發構建的一部分,必須有被調用來執行某些活動的rake任務;將這樣的活動包括在最適合的耙子任務中是適當的。 它應該檢查文件夾,如果它不存在;只是創建它們。遷移創建文件夾真的不是我猜的正確方法。

2

我會將它包含在bootstrap rake任務中。

+0

你在那裏失去了我,我從來沒有這樣做,你有鏈接解釋你的意思嗎? – marcgg 2009-12-22 12:07:02

+1

它將涉及在/ lib/tasks中創建一個rake任務來設置環境。假設你做了一個任務,當你運行'rake yourapp:bootstrap'時,它會執行一些代碼爲你創建這些文件夾。 – dylanfm 2009-12-23 03:52:50

+0

感謝澄清 – marcgg 2009-12-23 11:25:22

2

這是一個很好的問題。

對我來說,我會把文件夾創建在遷移中,當且僅當該遷移的一部分需要文件夾。因此,例如,您正在添加或更新處理附件的表格(例如attachment_fu等),那麼我會考慮將目錄創建/刪除放在那裏。

但是創建目錄是特定於環境的事情(在Windows和* nix等中不同),特別是在涉及權限的情況下。因此,以環境抽象的方式處理這些問題是很有意義的。也許在部署腳本中(如果使用Capistrano)或其他人在Rake任務中提出的建議。

+0

這使得有很大的意義,我越覺得它的更多的我覺得這是去 – marcgg 2009-12-22 12:06:25

相關問題