【问题标题】:Updating Ruby version to newer (latest) on production?在生产中将 Ruby 版本更新为更新(最新)?
【发布时间】:2014-04-08 19:06:08
【问题描述】:

我们在生产服务器上使用 Ubuntu 12.04 TLS、Ruby 1.9.3、Rails 3.2.12 和 RVM。

我们希望在不更新 Rails 的情况下将 Ruby 从 1.9.3 升级到 2.2(或任何最新版本)。

我有三个问题:

  1. 这样做是否有任何警告、任何不一致、不推荐使用的方法?该网站是否有可能停止工作?
  2. 考虑到我们正在使用 RVM,是否有可能恢复到我们现在使用的版本(如果出现任何问题)?
  3. 是否有必要重新安装我们现在正在使用的所有 gem?

提前致谢!

【问题讨论】:

  • 是的,是的,是的。如果您还没有这样做,请首先在您的开发或登台服务器上进行。除非您的生产环境明显不同,否则您可能不会遇到任何特定于生产的问题,但您需要重新配置您的 Web 服务器以指向正确的二进制文件。
  • 我同意@ZachKemp,这不是开发服务器的用途吗?只是为了安全。
  • 是的!我应该对此有所了解。谢谢!

标签: ruby-on-rails ruby ubuntu rvm updates


【解决方案1】:

始终假定整个机器将被此过程破坏而无法修复。做好最坏的准备,抱最好的希望。如果您没有测试机器,您可以使用Vagrant 之类的工具构建一个。一旦你有一个可行的过程,在你的生产系统上重复它。

Ruby 2.1.1 是当前版本。您还需要查看升级 Rails 本身以避免一堆nasty vulnerabilities。 3.2.17 是这里的目标版本。

RVM 确实使升级变得更容易,但您还需要升级您的启动器(例如,Passenger)以使用较新的 Ruby 版本。是的,可以退出,但这并不总是很方便。

可能有助于从灾难中救援的一个技巧是将您的 /etc 目录检查到本地 Git 存储库中。这使您可以回滚您所做的任何配置更改,并查看您在升级过程中实际所做的更改。

对基本 Ruby 版本的任何更改都需要重新安装 所有 gem。如果您使用Bundler 或自动部署工具,这应该是相当自动的。

【讨论】:

  • 另外:运行测试。如果您没有测试套件(真丢脸),请使用新的 ruby​​ 环境在 dev 中手动测试您的应用。
  • 而且,如果使用 vagrant 构建开发环境,不要在您的生产系统上运行它。确实,将开发/测试环境放在一起并不难,如果这是针对企业的,那么即使是微型 PC 也足够了,而且价格实惠。由于在开发或测试中应该遇到的问题而导致产品盒第一次出现故障时,管理层会突然对花钱购买硬件和/或更换那些不建议在更多环境中工作的人更加敏感受控环境。
猜你喜欢
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2020-06-16
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多