虽然安装了ruby gem但未找到它

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

并且有问题的gem位于预定位置。

这是我尝试运行$ 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(虽然它位于它应该的位置)。 非常感谢对该解决方案的任何指导。

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

在/ usr / bin中/ruby

第二个是:

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

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

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

你之前安装了oauth吗?

 gem install oauth 

这似乎是必要的

编辑:

在你的

 gem env 

你有

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

但如果你看错误,它说你正在运行

 ruby 1.8.7.173 

你指的是不同版本的ruby吗?

试一试

 sudo update-alternatives --config ruby 

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

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

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

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

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

你有没有尝试过:

 require 'rubygems' 

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