2010-05-09 75 views
20

我在这里发现了一些类似的问题,但没有一个匹配我的案例(对不起,如果我忽略了)。这是我的问题:我安装了oauth-plugin gem到ruby gem dir,但试图在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

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(虽然它位于它应该是)一个单一的宝石错误。任何对解决方案的指导都非常感谢。

+0

你能发布Rails给你的错误信息吗? – 2010-05-17 22:58:14

回答

22

您安装了两个不同版本的Ruby。第一是在:

的/ usr /斌/红宝石

和第二个是在:

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

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

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

+1

你很可能做类似如下的事情:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem install oauth-插件使用web服务器安装gem Ruby版本 – 2010-05-20 09:38:35

+0

from ls -l/usr/lib/ruby​​看来你所说的两个版本是一样的 – tommasop 2010-05-20 11:04:52

+1

你说的对,这两个文件夹安装了不同的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 红宝石1.8.7(2009-06-08 patchlevel 173)[universal-darwin10。 0]' 所以,如果我删除'Ruby.framework'中的一个,并把符号链接到第一个,我应该很好。 – Eimantas 2010-05-20 14:57:05

0

你试过:

require 'rubygems' 
+0

是的。它也不起作用。 – Eimantas 2010-05-15 15:06:43

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?

+0

嗯..这一定是原因,但我不明白为什么gem命令在一个位置安装gem,然后在rails上使用ruby需要不同的(我确定我的系统中只有一个版本的ruby)。 – Eimantas 2010-05-19 16:10:57

+0

那么“sudo”gem install怎么样?他有两个不同的GEM_HOME吗? – microspino 2010-05-20 09:38:25

1

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

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

其可能你的宝石路径是从您的Rails应用程序内搞砸了。上面的命令应该告诉你,如果这个宝石实际上被轨道找到了。

如果找不到,请尝试system("gem env")script/console,看看是否有什么东西跳出来对你。这应该有助于调试。

+0

我在我的environment.rb中有config.gem'oauth-plugin',但是当该行出现时 - 我无法运行./script/console,因为gem依赖不满足(但是如果我注释掉它并且运行系统的'宝石'...'我得到了宝石的正确路径 – Eimantas 2010-05-18 18:42:39

2

试试看

sudo update-alternatives --config ruby 

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

0

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