我是否需要恢复到旧版本的Rails才能运行单个遗留应用程序(以及其他问题)?

时间:2009-04-28 22:26:34

标签: ruby-on-rails ruby installation rubygems

我有一个我需要运行的旧版Rails应用程序。但是我有最新版本的Rails。

当我尝试运行这个较旧的应用时,它说:

  

缺少1.99.0宝石的Rails。请   gem install -v=1.99.0 rails

但是当我运行命令时: gem install -v = 1.99.0 rails

  

错误:找不到宝石轨道   本地或存储库

不确定下一步该怎么做。有人可以帮我理解这里发生了什么吗?

我的第二个问题是,与这个问题相关的问题是:为了运行这个遗留应用程序,我需要恢复到旧版本的Rails似乎很愚蠢 - 必须有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

AFAIK,v1.99.0有点v2.0预发行版,因此您可以尝试安装v2.0.x,更改RAILS_GEM_VERSION中的config/environment.rb并运行{{1} }}

如果你考虑一下,它并不像最初看起来那么愚蠢。您使用快速发展的Web框架作为RoR创建应用程序。您的选择是:继续以与框架发展相同的速度开发您的应用程序,或者将rails gem(以及您的应用程序所依赖的其他东西,如宝石,插件)冻结到您的应用程序中,以使其不那么脆弱而期待宝石更新。

答案 1 :(得分:2)

关于第二个问题:是的,这很愚蠢。幸运的是,Rails团队发现了愚蠢,并且在某些时候他们让我们能够将应用程序(以及特定的gem版本)所需的Rails库版本“冻结”到vendor目录中。

冻结您的Rails版本:

rake rails:freeze:gems

有一段时间good blog post描述了这一点。

答案 2 :(得分:0)

除非您安装和部署RVM,否则您的安装将回滚系统rails安装,这将影响您的其他项目。如果要以这种方式手动管理开发环境,可以先卸载rails,然后为当前项目安装所需的rails版本。

但是尝试使用以下语法安装rails gem:

sudo gem install rails -v 1.99.0