bundle正在切换我的轨道版本,但我没有 gem 文件.如何阻止这种情况



我创建一个宝石集

$ rvm gemset create r3
$ rvm gemset use r3
$ gem install rails -v3.2.13

此时

$ rails -v

现在显示

$ Rails 3.2.13

但是每次我与我分叉的项目捆绑在一起时,我发现

rails -v

显示Rails 4.0.1 - 然后在运行测试
时给出相关项目的问题(4.0.13.2.13冲突)。

我的问题是 - 如果我的宝石文件只有:

$ cat Gemfile
source 'https://rubygems.org'
gemspec

这是怎么回事? 如何让我的命令行 ruby 版本保持在 3.2.13 而不切换到 4.0.1 一旦它切换到 4.0.1 我似乎就被困在该宝石集上,并且要创建一个3.2.13的宝石集,我必须重新开始。

捆绑包的工作原理是查找与 Gemfile 限制兼容的最新版本的 Gem。 在这种情况下,这些限制来自 gemspec 文件,该文件可能允许高于 3.2.13 的 Rails 版本。 因此,它选择了允许的最新版本的Rails - 即4.0.1。 您的 RVM 配置在此处无关紧要。

要将特定分支锁定到 Rails 3.2.13,只需添加以下内容:

gem 'rails', '3.2.13'

到分叉中的宝石文件。 这会在运行 bundle 时将本地版本锁定为 3.2.13。

如果您希望显式使用不同版本的rails那么根据Gemfile计算的版本,那么您需要使用:

NOEXEC_DISABLE=1 rails ...

您可以使用以下方法将其永久用于单 shell 会话:

export NOEXEC_DISABLE=1
rails ...

并禁用在通过计算的版本中加载 gem Gemfile将其放入您的 shell 初始化文件(如 ~/.bash_profile~/.zlogin):

export NOEXEC_DISABLE=1

发生这种情况是因为 RVM 会安装 gem rubygems-bundler它会在您运行 gem 二进制文件时自动分析您的Gemfile,如果通过此文件指定的版本可用,则会加载该版本(即使它仅指定为 gem 的依赖项)。

相关内容

  • 没有找到相关文章

最新更新