1

我创建了一个 gemset

$ 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.1与 冲突3.2.13)。

我的问题是 - 如果我的 Gemfile 只有:

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

gemspec

这是怎么回事?我怎样才能让我的命令行 ruby​​ 版本保持不变,3.2.13而不是切换到4.0.1 一旦切换到,4.0.1我似乎就被那个 gemset 卡住了,要创建一个3.2.13gemset,我必须重新开始。

4

2 回答 2

1

Bundle 通过查找与 Gemfile 的限制兼容的最新版本的 gem 来工作。在这种情况下,这些限制来自 gemspec 文件,该文件可能允许 Rails 版本高于 3.2.13。所以它选择了允许的最新版本的 Rails - 4.0.1。您的 RVM 配置与此处无关。

要将您的特定 fork 锁定到 Rails 3.2.13,只需添加以下内容:

gem 'rails', '3.2.13'

到你的 fork 中的 Gemfile。这将在您运行 bundle 时将本地版本锁定为 3.2.13。

于 2013-11-04T03:13:30.857 回答
0

如果您希望明确使用不同的版本,那么您需要使用以下rails计算的版本:Gemfile

NOEXEC_DISABLE=1 rails ...

您可以通过以下方式使其永久用于单个 shell 会话:

export NOEXEC_DISABLE=1
rails ...

Gemfile并禁用通过将其放入您的外壳初始化文件(如~/.bash_profile或)计算的版本中加载宝石~/.zlogin

export NOEXEC_DISABLE=1

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

于 2013-11-04T04:06:21.163 回答