适用于Ubuntu Raring Ringtail 13.04上的Ruby 1.8.7的“bundle install”

时间:2013-09-24 19:20:58

标签: ruby rubygems rvm bundler vagrant

我不是一个红宝石,可能会有一些我不知道的东西。

我在Ruby 1.8.7中编写了一个应用程序,我正在尝试将其打包在Vagrant(运行Raring 13.04)中,但是我要运行“bundle install”来安装需求,即使是gem1.8确实存在,运行bundle install仍然为Ruby 1.9.3安装gem。然后我的程序在运行时失败了......

有关如何解决此问题的想法吗?

更新1

相关的Gemfile(感谢第一个回答者):

ruby '1.8.7'

# ...
gem 'trollop'

但是对于ruby1.8 myfile.rb,会出现错误

no such file to load -- trollop (LoadError)

经过调查,问题出现在bundle install

Your Ruby version is 1.9.3, but your Gemfile specified 1.8.7

我没有得到如何解决问题。

更新2

在遵循@klaffenboeck的建议后,情况发生了变化。我在使用RVM并在进入项目文件夹时使用Ruby 1.8.7。 Bundler似乎正确安装了东西,但是需求似乎失败了...路径问题?

有关Vagrant / RVM设置的详细信息,请参阅此处:https://rvm.io/integration/vagrant

更新3

问题解决了,我错过了一个:

require 'rubygems'

在所有宝石之前(它在本地工作但不在Vagrant中)。

3 个答案:

答案 0 :(得分:2)

Bundler将为PATH中的任何Ruby安装宝石(默认情况下)。

尝试/usr/bin/env ruby -vwhich ruby找出哪一个;我的猜测是你在使用Ruby 1.8运行捆绑包。

添加

ruby '1.8.7'
Gemfile顶部的

将有助于诊断。

答案 1 :(得分:1)

一般不知道这个问题,但是尝试将ruby版本放在gemfile的顶部:

#Gemfile
ruby '1.8.7'

# followed by your gems

编辑:

这很可能是因为您的Gemfile.lock声明了ruby 1.9.3 - 运行bundle update

答案 2 :(得分:0)

尝试运行gem uninstall bundler,然后gem1.8 install bundler

您的bundle命令似乎在Ruby 1.9.3下运行。您可以使用head -n 1 $(which bundle)验证哪个ruby可执行文件打包程序正在使用。你想要它是ruby1.8。