虽然安装了红宝石宝石但未找到

时间:2010-05-09 08:03:11

标签: ruby rubygems

我在SO上发现了一些类似的问题,但似乎没有一个与我的情况相符(对不起,如果我忽略了)。这是我的问题:我在ruby gems目录中安装了oauth-plugin gem,但是尝试在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.

这不是rubygems找不到的单个gem(虽然它位于它应该的位置)。非常感谢对该解决方案的任何指导。

6 个答案:

答案 0 :(得分:22)

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

的/ usr /斌/红宝石

,第二个是:

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

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

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

答案 1 :(得分:2)

您之前安装过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?

答案 2 :(得分:2)

试试

sudo update-alternatives --config ruby 

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

答案 3 :(得分:1)

首先要做的是:config.gem 'oauth-plugin'文件中有config/environment.rb行吗?

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

你的宝石路径可能会从你的rails应用程序中搞砸了。上面的命令应该告诉你是否实际上是通过rails找到了gem。

如果找不到,请从system("gem env")尝试script/console,看看是否有任何事情发生。这应该有助于调试。

答案 4 :(得分:0)

你试过了吗?

require 'rubygems'

答案 5 :(得分:0)

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