Рубиновый камень не найден, хотя он установлен
Я нашел некоторые подобные проблемы здесь, на SO, но ни один из них не соответствует моему делу (извините, если я упустил из виду). Вот моя проблема: я установил gaut gaut для рубинового 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
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.
Это не один камень, который не найден рубигемами (хотя он расположен там, где он должен быть). Любые рекомендации в отношении решения очень ценятся.
Ответы
Ответ 1
У вас есть две разные версии Ruby. Сначала находится:
/USR/бен/рубин
а второй - в:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
Проблема заключается в том, что один используется в командной строке (например, для установки драгоценных камней), а другой используется веб-сервером для запуска Rails.
Поскольку ваш веб-сервер использует вторую версию Ruby, одним из решений будет установка gem с использованием этой версии Ruby. В качестве альтернативы вы можете указать веб-серверу использовать другую версию Ruby - в зависимости от того, какой сервер вы используете, это может быть достигнуто по-разному.
Ответ 2
Вы ранее устанавливали oauth?
gem install oauth
Кажется, что необходимо
EDIT:
На вашем
gem env
у вас есть
RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0]
Но если вы посмотрите на ошибку, в ней говорится, что вы используете
ruby 1.8.7.173
Указываете ли вы на разные версии ruby?
Ответ 3
Просто попробуйте
sudo update-alternatives --config ruby
и выберите другую рубиновую версию. Работал для меня.
Ответ 4
В первую очередь: у вас есть строка config.gem 'oauth-plugin'
в вашем файле config/environment.rb
?
Если да, попробуйте запустить script/console
и введите system("gem which oauth-plugin")
Возможно, ваш путь из драгоценных камней перепутан из вашего приложения rails. Вышеупомянутая команда должна сказать вам, действительно ли камень найден на рельсах.
Если он не найден, попробуйте system("gem env")
из script/console
и посмотрите, не выскочит ли на вас что-либо. Это должно помочь в отладке.
Ответ 5
Вы пробовали:
require 'rubygems'
Ответ 6
В Windows 7 с помощью rubyinstaller я выбрал второй флажок, который делает рубин доступным везде, то есть вам не нужно настраивать какие-либо пути к установленной рубиновой версии. Это может повлиять на другие версии ruby или других проектов, если у вас несколько сред с несколькими средами.