ruby-on-rails – 如何在不放下应用的情况下推送到Heroku

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何在不放下应用的情况下推送到Heroku前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
只是想知道每个人如何在Heroku上将更新推送到他们的生产服务器,而不会让应用程序停机几秒钟?

推送到Heroku(特别是使用像Unicorn这样的东西)需要一段时间才能加载Web应用程序.特别是当有最终用户试图访问该网站时.他们最终得到503页.加载Unicorn进程需要30秒到一分钟.

解决方法

你需要做两件事才能做到这一点,这并非易事.

1)迁移需要向后兼容(即,在应用程序运行时运行).请参阅此文章http://pedro.herokuapp.com/past/2011/7/13/rails_migrations_with_no_downtime/

2)使用两个heroku应用程序进行部署.我和Heroku就这个主题开了一张票,这是他们的答复:

We’re currently working on a solution to provide a zero-downtime
deploy but do not have an ETA on when this might be available.

In the meantime a workaround that might be possible would be to deploy
to two separate apps. You can push new code to the second app,spin it
up,then move the domain names over to the second app. Wash and repeat
on the next deploy. This is less than ideal but might get you the
desired result in the interim.

如果你这样做,你会希望尽可能自动化,因为有很多方法可以搞砸了.这是一篇关于该主题文章http://casperfabricius.com/site/2009/09/20/manage-and-rollback-heroku-deployments-capistrano-style/

为什么?

必须同时完成这两个解决方案,因为数据库迁移必须在代码的两个(实时和即时)版本中工作.一旦你有了这个工作,那么你可以解决第二个问题,让应用程序本身看起来不像它已经失效.一旦推动开始,就没有支持的方式来旋转和降低单个动态.

更新:
Heroku现在提供测试版功能.要在推送之前执行以下操作:

heroku labs:启用-a APP_NAME预启动

这将在推送期间更改应用程序的行为.它将推升一个将热身两分钟的并行实例.推送几乎两分钟后,所有流量都将路由到新的应用程序.如上所述,请注意迁移,因为它们仍然是一个问题.

原文链接:https://www.f2er.com/ruby/264962.html

猜你在找的Ruby相关文章