我不是一个红宝石,可能会有一些我不知道的东西。
我在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中)。
答案 0 :(得分:2)
Bundler将为PATH
中的任何Ruby安装宝石(默认情况下)。
尝试/usr/bin/env ruby -v
或which 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。