【问题标题】:ruby gem not found although it is installed尽管已安装 ruby​​ gem,但未找到
【发布时间】:2010-05-09 08:03:11
【问题描述】:

我在 SO 上发现了一些类似的问题,但似乎没有一个与我的情况相匹配(抱歉,如果我忽略了)。这是我的问题:我将 oauth-plugin gem 安装到 ruby​​ gems 目录,但尝试在 rails 应用程序中使用它告诉我找不到它。以下是相关命令的输出:

安装

% s gem install oauth-plugin
Successfully installed oauth-plugin-0.3.14
1 gem installed
Installing ri documentation for oauth-plugin-0.3.14...
Installing RDoc documentation for oauth-plugin-0.3.14...

gem which oauth-plugin 输出:

% gem which oauth-plugin
/usr/lib/ruby/gems/1.8/gems/oauth-plugin-0.3.14/lib/oauth-plugin.rb

gem env 输出:

% gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-10
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /Users/eimantas/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => true
     - :bulk_threshold => 1000
     - :gem => ["--no-ri", "--no-rdoc"]
     - :sources => ["http://gems.ruby.lt/", "http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://gems.ruby.lt/
     - http://rubygems.org/

执行ls -l /usr/lib/ruby 表明:

% ls -l /usr/lib/ruby     
lrwxr-xr-x  1 root  wheel  76 Aug 14  2009 /usr/lib/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby

有问题的宝石位于预定位置。

这是我尝试运行 $ rake spec 时 rails 给我的错误

Missing these required gems:
  oauth-plugin   = 0.3.14

You're running:
  ruby 1.8.7.173 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  rubygems 1.3.6 at /Users/eimantas/.gem/ruby/1.8, /Library/Ruby/Gems/1.8, /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Run `rake gems:install` to install the missing gems.

这不是一块未被 ruby​​gems 发现的宝石(尽管它位于应有的位置)。非常感谢您对解决方案的任何指导。

【问题讨论】:

  • 您能发布 Rails 给您的错误消息吗?

标签: ruby rubygems


【解决方案1】:

您安装了两个不同版本的 Ruby。首先是:

/usr/bin/ruby

第二个在:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

问题是一个用于命令行(即安装gems),另一个用于Web服务器运行Rails。

由于您的 Web 服务器使用的是第二个 Ruby 版本,因此一种解决方案是使用该 Ruby 版本安装 gem。或者,您可以告诉您的 Web 服务器使用不同的 Ruby 版本 - 根据您使用的服务器,这可以通过不同的方式实现。

【讨论】:

  • 您很可能会执行以下操作:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem install oauth-plugin 以使用 Web 服务器 Ruby 版本安装 gem。
  • 从 ls -l /usr/lib/ruby 看来你说的两个版本是一样的
  • 你是对的。这两个文件夹安装了不同的 ruby​​:% /usr/bin/ruby -v ruby 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0] % /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -v ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0] 所以如果我删除 Ruby.framework 中的那个并把符号链接放到第一个我应该很好。
  • 您能否将 gem 添加到您的 gemfile 以用于 rails 应用程序并运行 bundle?
【解决方案2】:

试试吧

sudo update-alternatives --config ruby 

并选择其他 ruby​​ 版本。为我工作。

【讨论】:

    【解决方案3】:

    您之前是否安装过 oauth?

    gem install oauth
    

    好像是needed

    编辑:

    在你的

    gem env
    

    你有

    RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0]
    

    但是如果您查看错误,它会说您正在运行

    ruby 1.8.7.173
    

    您是否指向不同版本的 ruby​​?

    【讨论】:

    • hmm.. 这一定是原因,虽然我不明白为什么 gem 命令将 gem 安装在一个位置,然后 ruby​​ on rails 需要不同的位置(我确定我只有一个版本我系统中的红宝石)。
    • “sudo”gem 安装怎么样?他有两个不同的GEM_HOME吗?
    【解决方案4】:

    第一件事:你的config/environment.rb 文件中有config.gem 'oauth-plugin' 行吗?

    如果是这样,请尝试运行 script/console 并输入 system("gem which oauth-plugin")

    您的 gem 路径可能从您的 rails 应用程序内部弄乱了。上面的命令应该告诉你 gem 是否真的被 rails 找到了。

    如果没有找到,请尝试从script/console 中找到system("gem env"),看看是否有任何问题。这应该有助于调试。

    【讨论】:

    • 我的 environment.rb 中有 config.gem 'oauth-plugin',但是当该行存在时 - 我无法运行 ./script/console,因为不满足 gem 依赖项。(但是,如果我将其注释掉并运行 system 'gem which...' 我会得到 gem 的正确路径。
    【解决方案5】:

    你试过了吗:

    require 'rubygems'
    

    【讨论】:

      【解决方案6】:

      在 Windows 7 上,使用 ruby​​installer,我选择了使 ruby​​ 随处可用的第二个复选框,这意味着您不必为已安装的 ruby​​ 版本配置任何路径。如果您有多个开发环境,它可能会影响其他版本的 ruby​​ 或其他项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        相关资源
        最近更新 更多