1

我目前在使用 bundler 和 ruby​​ 时遇到了一个奇怪的问题。如果我输入:

$ which ruby

我得到:

/home/martinos/.rubies/1.8.7-p370/bin/ruby

当我输入:

$ which bundle

我明白了

/home/martinos/.gem/ruby/1.8.7/bin/bundle

但是由于某种原因,当我跑步时

$ bundle exec rake db:migrate

该任务使用 ruby​​ 1.9.3 运行(我在 environment.rb 中编写了 puts RUBY_VERSION)

有人知道为什么会这样吗?

这是更多信息:当我输入时:

$ which rake

我得到:

/home/martinos/.gem/ruby/1.8.7/bin/rake

但如果我

$ head -1 `which rake`

我得到:

#!/usr/bin/env ruby1.9.1
4

1 回答 1

1

有各种各样的作品可以发挥作用。首先是它可能是您的 Ruby 版本管理工具和您的全局 gem 之间的冲突。意思是,我想您可能只有一个可以在全局集中的 Ruby 1.9.1 上运行的 Rake 版本。因此,当您启动 Rake 时,它​​被迫在 Ruby 1.9.1 中运行。

您可能想要做的是创建一个特定于目录的 gemset。如果您使用的是RVM,您可以通过查看他们的Gemset 文档来查看有关如何执行此操作的文档。一旦您想要测试的 Ruby 版本就位,然后在可以与该 Ruby 版本一起使用gem install的版本上执行 Rake。此时,您应该会发现在该目录中用于运行 Rake 的 Ruby 版本将与您正在运行的版本相同。

如果这不能回答您的问题,或者您已经考虑过这种方法,我深表歉意。试图在没有重现问题的能力的情况下解决这个问题是一件棘手的事情。

于 2013-06-04T03:08:29.603 回答