我目前在使用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中编写了一个put RUBY_VERSION)
任何人都知道为什么会这样?
以下是更多信息: 当我输入:
$ which rake
我明白了:
/home/martinos/.gem/ruby/1.8.7/bin/rake
但如果我
$ head -1 `which rake`
我明白了:
#!/usr/bin/env ruby1.9.1
答案 0 :(得分:1)
有各种各样的作品可以发挥作用。首先,它可能是您的Ruby版本管理工具与您的全球宝石之间的冲突。这意味着,我想你可能只有一个可以在你的全局集中的Ruby 1.9.1上运行的Rake版本。因此,当你启动Rake时,它被迫在Ruby 1.9.1中运行。
您可能想要做的是创建一个特定于目录的gemset。如果您使用的是RVM,则可以通过查看Gemset documentation来查看有关如何执行此操作的文档。一旦使用您想要测试的Ruby版本到位,然后在适用于该Ruby版本的版本上执行gem install
Rake。此时你会发现用于在该目录中运行Rake的Ruby版本将与你运行的版本相同。
如果这不能解答您的问题,或者您已经考虑过这种方法,我道歉。试图在没有重现问题的能力的情况下解决这个问题是一件非常棘手的事情。