2010-05-09 72 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或其他項目。