【问题标题】:How to stop accepting requests when you are upgrading your rails site?升级 Rails 站点时如何停止接受请求?
【发布时间】:2016-11-16 03:09:01
【问题描述】:

每当我想部署新版本的 rails 应用程序时。我想停止接受来自客户端的请求。

示例:用户正在填写表单。在后面,我正在升级我的 rails web(不是 rails 或 ruby​​ 版本)。当用户在升​​级发生或已经发生时提交表单时,我想显示类似“网站已升级,请重试”之类的内容。是否真的有可能,或者有什么方法可以实现。

已编辑:假设用户填写一个大表单 10 分钟(尚未按下提交)。我们的升级耗时 1 分钟,当用户提交时,想要显示消息。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    您可以使用以下 gem(如果您的应用程序不是 Heroku 应用程序):

    https://github.com/biola/turnout

    效果很好

    【讨论】:

      【解决方案2】:

      一种常见的方法是在这样的大版本发布之前将站点切换到维护模式。在维护模式下,所有功能都处于离线状态,服务器以相同的静态 html 回复所有请求(“站点正在维护,请稍后再试”或其他内容)。

      例如,在heroku中this is built-in

      在大版本发布之前,启用维护模式

      heroku maintenance:on
      

      做你的发布、升级数据库等,然后让网站重新上线

      heroku maintenance:off
      

      如果您不在 heroku 上,您要么必须自己实现(这个想法非常简单),要么可能有一个 gem。

      【讨论】:

      • 感谢您的快速回复。网站在亚马逊。会调查的。
      【解决方案3】:

      我建议你考虑让 nginx 服务于维护页面,你必须构建一个 html 页面来由 nginx 服务

      请阅读以下关于如何使 nginx 服务于维护页面的帖子

      http://mensfeld.pl/2014/08/nginx-and-puma-behind-maintenance-mode-for-rackrails-applications-with-capistrano/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-13
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多