我正在嘗試使用application_ruby cookbook來部署我的Rails應用程序。我需要運行一些一次性安裝活動(例如使用rake db:seed
來播種數據庫)。這些不應該在隨後的廚師運行中完成。什麼是定義這些任務的正確方法?如何在使用應用程序菜譜時運行設置活動?
0
A
回答
0
我解決了這個使用條件執行這樣的方式:
execute "seed database" do
cwd node[:release_path]
user node[:owner]
environment ({'RAILS_ENV' => node[:environment]})
command "bundle exec rake db:seed && touch #{node[:deploy_path]}/db.seeded"
not_if { ::File.exists?("#{node[:deploy_path]}/db.seeded") }
end
這可以確保一個設置步驟只發生一次。
1
試用after_party寶石。這種方式運行許多耙任務(你說哪些)像遷移,意味着不執行兩次。然後,你必須記住,如果你想改變你所必須創建一個新的(如遷移)這個rake任務的一個先前執行的東西
種子的目的,你可以使用seed_fu嘗試。使用限制 技術。我相信,這是種子的正確選擇,但是具有seed_fu語法。
有些人將種子或數據遷移(我不喜歡)。看看 this question/answer。我相信,這種與移民融合的最糟糕的種子並不是好主意。種子在時間上的變化意味着新的遷徙和種子因環境而變化幾乎是不可能的。
+0
感謝您收到這些提示!我寧願不要觸摸應用程序本身,並將邏輯移至部署配方。 – Emil
相關問題
- 1. 如何在運行時設置應用程序的入口活動?
- 2. 應用程序設置 - 在運行時
- 3. 如何在應用程序運行時執行活動?
- 4. 如何在應用程序(活動)仍在運行時刷新?
- 5. 如何在使用Espresso運行活動測試時創建應用程序類
- 6. 如何在設備啓動時運行android應用程序?
- 7. 設置應用程序如何啓動應用程序的非導出活動?
- 8. 使活動僅在第一次運行應用程序時運行
- 9. 如何更改運行時應用程序設置
- 10. iPhone - 在應用程序在後臺運行時更改應用程序設置
- 11. 如何在Android應用程序中運行其他活動?
- 12. 在運行時設置應用程序配置
- 13. 如何在調用活動時將菜單設置爲可見?
- 14. 在啓動時運行應用程序
- 15. 在啓動時運行應用程序
- 16. 設置應用程序的活動,接受action.VIEW行動
- 17. 如何在應用程序打開時更改應用程序設置(設置)?
- 18. 如何在應用程序在後臺運行時打開特定活動?
- 19. 當應用程序未運行時自動激活進程
- 20. 使用jQuery設置活動菜單項
- 21. 在運行時在Go應用程序中設置值
- 22. 如何在mvc應用程序的運行時設置保存位置
- 23. 如何在系統啓動時自動運行應用程序?
- 24. 帶主題菜單的WinForm應用程序 - 爲活動菜單設置背景
- 25. 如何在應用程序運行時啓動進程?
- 26. 如何在移動設備上運行java應用程序?
- 27. 如何設置應用程序啓動應用程序變量
- 28. 應用程序運行時首次運行活動正在顯示
- 29. 在運行時更改應用程序設置
- 30. 在Cloud Service上設置運行時應用程序洞察
當你的種子需要一個新的記錄時,你會怎麼做?恩。新的admin_user,國家等?去刪除#{node [:deploy_path]}/db.seeded文件和廚師做飯嗎? – montells
然後,它不再是一次性安裝活動。這可能與IMO以某種方式進行遷移有關。我擔心的是更多的步驟需要一次又一次發生。 – Emil