如何在升级rails站点时停止接受请求?

时间:2016-11-15 09:05:16

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

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

示例:用户正在填写表单。在后面我正在升级我的rails web(不是rails或ruby版本)。当用户在升​​级或发生升级时提交表单时,我想显示类似“网站已升级”的内容,请再试一次'。它实际上是可能的,还是某种方式来实现它。

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

3 个答案:

答案 0 :(得分:1)

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

https://github.com/biola/turnout

效果很好

答案 1 :(得分:0)

一种常见的方法是在大量发布之前将站点切换到维护模式。在维护模式下,所有功能都处于脱机状态,服务器使用相同的静态html回复所有请求(“网站正在维护,请稍后再试”或其他)。

例如,在heroku this is built-in中。

在大发布之前,您启用了维护模式

heroku maintenance:on

您的发布,升级数据库等,然后将网站重新联机

heroku maintenance:off

如果你不在heroku上,你要么必须自己实现(这个想法非常简单),要么就是这样的宝石。

答案 2 :(得分:0)

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

请阅读以下文章,了解如何使nginx服务于维护页面

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