【问题标题】:"bundle install" for Ruby 1.8.7 on Ubuntu Raring Ringtail 13.04Ubuntu Raring Ringtail 13.04 上 Ruby 1.8.7 的“捆绑安装”
【发布时间】:2013-09-24 19:20:57
【问题描述】:

我不是 ruby​​ist,我可能缺少一些明显的东西。

我在 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'

在所有 gems 之前(它在本地工作,但在 Vagrant 中不起作用)。

【问题讨论】:

标签: ruby rubygems rvm bundler vagrant


【解决方案1】:

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

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

添加

ruby '1.8.7'

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

【讨论】:

    【解决方案2】:

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

    #Gemfile
    ruby '1.8.7'
    
    # followed by your gems
    

    编辑:

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

    【讨论】:

    • 感谢您的快速回复,它不起作用,我已经更新了我的问题。
    • 好吧,我已经删除了锁定文件,但是 bundle 一直在回响同样的事情(我也尝试过更新命令)
    • 您是否使用了 rvm 或 rbenv 之类的东西,这可能会影响您的 ruby​​ 版本?
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 1970-01-01
      • 2013-05-05
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多