新手问题 如何将锁定 rails 版本的项目降级

ChileNeverDie · February 01, 2020 · Last by ThxFly replied at February 05, 2020 · 2804 hits

碰到个问题,目前用的是最新的 rails6,但是有个 gem 只支持 5.2,但是我创建项目的时候执行的是

Rails _6.0.1_ new ***

如何解锁并降级?

ChileNeverDie closed this topic. 01 Feb 16:54
ChileNeverDie reopened this topic. 01 Feb 16:54

建议 fork 那个 gem 的代码,修改了用

这种场景一般是 fork gem 然后做一些针对性修复以使得 gem 可以应用在新版 rails,或许顺便还可以给 gem 提个 pull request。另外降级 rails 可能会导致其他较新的 gem 出问题。

如果确实要降级,可以先修改 Gemfile 里的版本号,然后试试 bundle update rails,再然后针对出现的依赖错误一个个的修改。

Reply to oldfritter

额,可能说的不是很明白,

现在我整个项目是匹配了 Rails 6,我希望能把 Rails 6 降回 Rails 5.2...因为支持 sqlserver 的 gem 最新版本只支持 Rails5.2.。。。然后我创建项目的时候,直接把整个项目的版本定死了 QAQ,咋把项目的版本解锁?我看生成了个 Gemfile.lock,但是删掉的话会直接造成无法找到这个项目,无法 bundle install

Reply to zhengpd

额,可能说的不是很明白, 现在我整个项目是匹配了 Rails 6,我希望能把 Rails 6 降回 Rails 5.2...因为支持 sqlserver 的 gem 最新版本只支持 Rails5.2.。。。然后我创建项目的时候,直接把整个项目的版本定死了 QAQ,咋把项目的版本解锁?我看生成了个 Gemfile.lock,但是删掉的话会直接造成无法找到这个项目,无法 bundle install

降级和升级是类似的。

  1. 新建一个分支,删除除.git 外的所有文件
  2. 用 Rails 5.2 新建一个同名的项目
  3. 将原先文件拷贝至新项目
  4. 运行测试。
  5. rebase 分支。

把 Gemfile 里的 rails 改成 5.2,然后 bundle update rails,应该会出错,根据出错信息再修改相关 gem 的版本,继续 bundle update,继续修改,如此继续……

看了下 sqlserver gem 的 6-0-dev 分支是 draft 状态,也好几个月没更新了,不知道是不是可用的代码

Reply to zhengpd

所以我直接重新写了个项目,用 Rails5.2 又写了一遍。。。QAQ

Reply to ken

直接用会提示 alias 的问题。。。具体是啥问题我忘了。。。看了下里面的 issue,大概率是不支持 6 版本,好奇他们咋那么早就开始搞 6 版本的 gem。。。

Reply to ThxFly

我直接重写了。。。有些 gem5.2 似乎不支持。。。

拷贝的时候不要拷贝 Gemfile.lock

You need to Sign in before reply, if you don't have an account, please Sign up first.