0

我不是红宝石学家,可能有一些明显的东西我遗漏了。

我在 Ruby 1.8.7 中编写了一个应用程序,我正在尝试将它打包在 Vagrant 中(运行 Raring 13.04),但我必须运行“捆绑安装”来安装要求,即使 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 似乎可以正确安装东西,但是 require 似乎失败了……路径问题?

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

更新 3

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

require 'rubygems'

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

4

3 回答 3

2

Bundler 将为您的PATH.

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

添加

ruby '1.8.7'

在您的 Gemfile 之上将有助于诊断。

于 2013-09-24T19:26:37.310 回答
1

一般不知道这个问题,但尝试将 ruby​​-version 放在 gemfile 的顶部:

#Gemfile
ruby '1.8.7'

# followed by your gems

编辑:

这很可能是因为您的 Gemfile.lock 状态为 ruby​​ 1.9.3 - 运行bundle update

于 2013-09-24T19:24:09.147 回答
0

试试跑步吧gem uninstall bundlergem1.8 install bundler

您的bundle命令似乎在 Ruby 1.9.3 下运行。您可以验证哪个 ruby​​ 可执行捆绑器正在使用head -n 1 $(which bundle). 你希望它是ruby1.8。

于 2013-09-25T10:23:14.707 回答