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

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

碰到个问题,目前用的是最新的 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

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