在Heroku中部署Rails應用程序後,是否可以使用鉤子或事件來觸發某些事件?在Heroku部署後執行某些操作
具體來說,我們希望在tmp /下創建一個特定的目錄結構(該結構取決於配置值,因此無法檢入源代碼)。
在Heroku中部署Rails應用程序後,是否可以使用鉤子或事件來觸發某些事件?在Heroku部署後執行某些操作
具體來說,我們希望在tmp /下創建一個特定的目錄結構(該結構取決於配置值,因此無法檢入源代碼)。
Heroku在部署鉤子後支持一些 - 請參閱https://devcenter.heroku.com/articles/deploy-hooks。 您可以使用HTTP掛鉤在您的應用程序上觸發一個操作,以創建您想要的結構。作爲如何使用此HTTP部署掛鉤的示例,請查看http://dzello.com/blog/2012/03/11/spin-up-your-heroku-dyno-automatically-after-deploy/
請記住,如果您在tmp
目錄中創建任何內容,它將在dyno重新啓動後消失。
原來我的問題的兩個部分是不兼容的 - @eugen解釋瞭如何實現post-deploy鉤子,但也提醒我,當dyno重新啓動時,我創建的任何tmp目錄都會被炸掉...
那麼解決方案是什麼?以下是我想出了:
配置/初始化/的setup.rb
# Ensure temp file system is set up:
begin
Dir.mkdir("tmp/customdir") unless File.exists?("tmp/customdir")
rescue StandardError => e
# Allow this to fail on initial deploy
# (It will raise error: "No such file or directory - tmp/customdir" because the tmp dir won't yet exist)
end
說明:展開時期間 Heroku的本質做了兩遍初始化。第一遍預編譯資產時,通常會扼殺上述代碼,因爲tmp目錄不存在。如果我們允許它失敗,它將在第二次傳遞和隨後的重新啓動時起作用。
是的,這是一個黑客攻擊。我有tried before來弄清楚如何區分預編譯初始化和正常初始化,但似乎沒有辦法,所以這就是我們所要做的。
如果任何人都可以改進就會喜歡聽到它。
@ eugen-謝謝你爲你提供信用,因爲你回答了第一部分,但也指出我試圖實現的實際上不能在部署鉤子上工作。 [我的回答](http://stackoverflow.com/a/21652889/165673)爲第二部分提供了一個解決方案/破解... – Yarin