2013-02-11 37 views
5

Heroku允許您爲應用程序啓用「維護模式」,並允許您指定在此期間要投放的自定義網址。我剛剛嘗試了這一點,發現Heroku在iframe中提供自定義網址。這不是我期待的。有沒有辦法讓Heroku錯誤/維護網址直接在沒有iframe的情況下投放

我們使用Heroku託管API服務,並計劃讓自定義錯誤/維護頁面爲json數據提供服務。我們希望有一種方法可以直接提供維護網址。

經過搜索SO,Quora和一般的「互聯網」我還沒有看到任何帖子問這個問題,所以我在這裏張貼。

以下是與我的問題相關的帖子,但不要直接解決。

老上崗前有任何定製: https://groups.google.com/forum/?fromgroups=#!topic/heroku/EJRtW1XrlpU

後要求自定義JavaScript的HTML渲染的iframe: https://groups.google.com/forum/?fromgroups=#!topic/heroku/Db0JEWmuz_w

+0

jumand,你是否設法找到一種方法來實現這個目標?我現在正面臨類似的問題。 – sheldonbaker 2014-08-27 19:32:07

+0

不是。 : - /但從那以後我們一直沒有看過它。當時我們與一位客戶客戶經理進行了交談,似乎並沒有出現在路線圖上。 – jumand 2014-10-03 20:57:57

+0

這是一個解決方法:http://stackoverflow.com/a/42017093/242933。 – ma11hew28 2017-02-03 05:00:30

回答

0

作爲一種解決方法,您可以編程您的Heroku應用程序,以便對於它收到的每個請求,它首先(在做其他事情之前)檢查是否存在特定的環境變量,例如,稱爲MAINTENANCE。如果設置,您立即返回您的自定義JSON響應。

例如,在您的Rack appcall方法的開頭處添加以下代碼塊。 (對於Sinatra app,你可以在一個before filter的開頭添加它。對於Ruby on Rails app,你可以實現這個作爲Rack middleware。)

if ENV['MAINTENANCE'] 
    status = '503' 
    headers = {'Content-Type' => 'application/json'} 
    body = ['{"message":"The server is undergoing maintenance. Please try again later."}'] 
    return [status, headers, body] 
end 

然後,打開「maintenance mode,」設置你的應用程序的MAINTENANCE環境變量以任何你心中渴望的價值。

heroku config:set MAINTENANCE=1 

要關閉「維護模式」,只是未設置你的應用程序的MAINTENANCE環境變量。

heroku config:unset MAINTENANCE 

瞧! JSON REST API應用程序的臨時維護模式。

相關問題