【问题标题】:Advice on how to work on a old rails 2.x with ruby 1.8.7 application关于如何使用 ruby​​ 1.8.7 应用程序在旧 rails 2.x 上工作的建议
【发布时间】:2017-08-02 13:55:13
【问题描述】:

我继承了一个使用 ruby​​ 1.8.7 的非常古老的 rails 2.x 应用程序。

我想升级这个东西,但由于 Ruby 1.8.7,我什至无法在我的笔记本电脑上安装它。

我在本地运行此应用程序以启动最终升级过程的最佳方式是什么?

我可以从 Rails 2.x 转到 Rails 5.x 还是不建议这样做?

【问题讨论】:

  • 安装 Ruby 1.8.7 时遇到什么问题/错误?
  • 不,直接转到 5.x 不会显示先前版本已弃用代码的警告,因此它可能会成为一场噩梦。
  • 我建议使用rvm 来管理 ruby​​ 版本。从 Rails 2.x 迁移是一项艰巨的任务,并且充满了困难。您将需要在第 2 到 3 到 4 到 5 阶段进行迁移,以降低出现问题的风险。 Rails 2 和 3 之间的变化是显着的。测试和版本控制将是您最好的朋友。从头开始重写应用程序可能更容易。
  • Rails 在下一个版本中弃用了一些东西,然后在它被删除之后的版本上弃用了它。因此,例如,Rails 的 2 some_method 将在 Rails 3 中被弃用(但仍然可用),但在 Rails 4 中 some_method 将被删除。所以不,你不能轻易地跳 Rails 2 => Rails 5。另外,当我使用 Rails 2.x 处理应用程序时,我记得需要降级 bundler 才能使 Ruby 1.8.7 工作。也许 RVM 也需要为此降级。尝试向我们展示您在执行rvm install ruby-1.8.7 时收到的错误消息

标签: ruby-on-rails


【解决方案1】:

这是一个超负荷的问题,对于正确答案有很多变数。假设它仍然在 Rails 2.X 和 Ruby 1.8.7 上,没有测试或类似的东西可以让你自信地通过传统路线升级。

你不能一次完成从 2 => 5 的跳跃。无论应用程序的大小如何,从 2 => 3 的跃迁都很大,内部 API 的变化非常多。如果您可以通过 2 => 3 升级,从 3 => 5 移动并没有那么糟糕,您可能会跳过 4 并从 3 => 5 移动。

我不知道你的经验水平,但根据你的问题的性质,我认为它充其量是中等水平。我会深入研究 Rack 和 Web 服务器代理,并且可能会采用一次重写部分应用程序的方法。尽管代码发生了变化,但数据的底层结构几乎没有变化。如果它完全是模块化的或 RESTful 的,您可以结合 RVMRBev 将应用程序的不同部分挂载/代理到不同版本的 Rails

【讨论】:

  • 我害怕视图层的变化。我可以跳过使用资产管道并将我的 js 文件保存在公用文件夹中吗? (至少到最后一步)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多