8

Heroku 允许您为应用程序打开“维护模式”,还允许您指定在此期间提供的自定义 url。我刚刚尝试过,发现 Heroku 在 iframe 中提供自定义 url。这不是我所期待的。

我们使用 Heroku 来托管 API 服务,并计划让自定义错误/维护页面提供 json 数据。我们希望有一种方法可以直接提供维护 URL。

在搜索 SO、Quora 和一般的“互联网”之后,我没有看到任何帖子问这个问题,所以我在 SO 上发帖。

以下是与我的问题相关的帖子,但不直接解决。

进行任何自定义之前的旧帖子: https ://groups.google.com/forum/?fromgroups=#!topic/heroku/EJRtW1XrlpU

在呈现 iframe 的 html 中发布请求自定义 javascript: https ://groups.google.com/forum/?fromgroups=#!topic/heroku/Db0JEWmuz_w

4

2 回答 2

6

作为一种解决方法,您可以对 Heroku 应用程序进行编程,以便对于它收到的每个请求,它首先(在执行任何其他操作之前)检查是否存在特定环境变量,例如,称为MAINTENANCE. 如果设置,您将立即返回您的自定义 JSON 响应。

例如,在Rack 应用程序方法的开头添加以下代码块call。(对于Sinatra 应用程序,您可以将其添加到前置过滤器的开头。对于Ruby on Rails 应用程序,您可以将其实现为Rack 中间件。)

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环境变量设置为您想要的任何值。

heroku config:set MAINTENANCE=1

要关闭“维护模式”,只需取消设置应用程序的MAINTENANCE环境变量。

heroku config:unset MAINTENANCE

瞧!JSON REST API 应用程序的临时维护模式。

于 2017-02-03T05:00:04.157 回答
2

除了此处列出的使用 iFrame 的错误页面外,无法自定义错误页面:https ://devcenter.heroku.com/articles/error-pages#customize-pages

于 2013-02-11T15:16:20.963 回答