2013-02-11 10 views
5

Heroku consente di attivare la "modalità di manutenzione" per le applicazioni e consente inoltre di specificare un URL personalizzato da servire durante questo periodo. Ho appena provato questo e ho scoperto che Heroku serve l'URL personalizzato in un iframe. Questo non era esattamente quello che mi aspettavo.C'è un modo per avere un URL di errore/manutenzione Heroku servito direttamente senza l'iframe

Utilizziamo Heroku per ospitare un servizio API e abbiamo pianificato che le pagine di errore/manutenzione personalizzate servano ai dati di JSON. Speriamo che ci sia un modo per avere l'URL di manutenzione servito direttamente.

Dopo aver cercato SO, Quora e il generale "internet", non ho visto nessun post a fare questa domanda, quindi qui sto postando su SO.

Di seguito sono riportati i post relativi alla mia domanda, ma non indirizzarli direttamente.

Vecchi post prima che ci fosse alcuna personalizzazione: https://groups.google.com/forum/?fromgroups=#!topic/heroku/EJRtW1XrlpU

Messaggio chiedendo JavaScript personalizzato in html rendere l'IFRAME: https://groups.google.com/forum/?fromgroups=#!topic/heroku/Db0JEWmuz_w

+0

jumand, sei riuscito a trovare un modo per realizzare questo? Sto affrontando un problema simile in questo momento. – sheldonbaker

+0

No. : -/Ma non l'abbiamo esaminato da allora. All'epoca abbiamo parlato con un account manager del cliente e non sembrava che fosse sulla tabella di marcia. – jumand

+0

Ecco una soluzione alternativa: http://stackoverflow.com/a/42017093/242933. – ma11hew28

risposta

0

Come soluzione temporanea, puoi programmare la tua app di Heroku in modo che per ogni richiesta ricevuta, prima (prima di fare qualsiasi altra cosa) controlli la semplice esistenza di un variabile d'ambiente specifica, ad esempio, denominata MAINTENANCE. Se impostato, si restituisce immediatamente la risposta JSON personalizzata.

Ad esempio, aggiungere il seguente blocco di codice all'inizio del metodo . (Per un Sinatra app, si potrebbe aggiungere che all'inizio di un before filter. Per un Ruby on Rails app, è possibile implementare questo come 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 

Poi, per accendere "maintenance mode", impostare la variabile MAINTENANCE ambiente della tua applicazione a qualsiasi valore il tuo cuore desidera

heroku config:set MAINTENANCE=1 

Per disattivare "modalità di manutenzione," variabile MAINTENANCE l'ambiente app semplicemente disinserito.

heroku config:unset MAINTENANCE 

Voilà! Modalità di manutenzione improvvisata per un'app per le API JSON REST.

Problemi correlati