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

ChileNeverDie · 2020年02月01日 · 最后由 ThxFly 回复于 2020年02月05日 · 2802 次阅读

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

Rails _6.0.1_ new ***

如何解锁并降级?

ChileNeverDie 关闭了讨论。 02月01日 16:54
ChileNeverDie 重新开启了讨论。 02月01日 16:54

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

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

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

oldfritter 回复

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

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

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 分支。
ChileNeverDie 回复

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

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

zhengpd 回复

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

ken 回复

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

ThxFly 回复

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

ChileNeverDie 回复

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号