Нет такого файла для загрузки - rubygems (LoadError)
Недавно я установил рельсы в Fedora 12. Я тоже новичок в Linux. Все отлично работает в Windows 7. Но у меня много проблем в Linux. Помогите пожалуйста!
Я установил все необходимые знания, чтобы запустить базовый script/сервер. У меня есть эта ошибка при загрузке boot.rb при попытке script/server. Некоторые из деталей, которые я хотел бы здесь привести:
В каталогах, где установлены рельсы, рубин и драгоценный камень,
[[email protected] my_app]$ which ruby
/usr/local/bin/ruby
[[email protected] my_app]$ which rails
/usr/bin/rails
[[email protected] my_app]$ which gem
/usr/bin/gem
И когда я запускаю сервер script/, это ошибка.
[[email protected] my_app]$ script/server
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError)
from ./script/../config/boot.rb:9
from script/server:2:in `require'
from script/server:2
И файл PATH выглядит так:
[[email protected] my_app]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/ruby:$PATH"
Я предполагаю, что это что-то связано с файлом PATH. Дайте мне знать, что мне нужно изменить здесь. Если есть другие изменения, я должен сделать, пожалуйста, дайте мне знать.
Ответы
Ответ 1
У меня есть подозрение, что у вас две версии ruby. Вставьте вывод следующей команды:
$ which -a ruby
обновлено относительно комментария:
Убейте одну версию и оставьте только одну. У меня была такая же проблема с двумя версиями, которые смотрели на разные места для драгоценных камней. Если бы я сошел с ума в течение нескольких недель. Положите щедрость здесь, в SO, получил мне тот же ответ, который я вам даю.
Все, что я сделал, это nuke, одна установка ruby и оставила один управляемый через порты. Я бы предложил сделать это:
- Удалить рубиновую версию, установленную через порты (yum или любой менеджер пакетов).
- Удалите рубиновую версию, поставляемую с ОС (hardcore rm вручную).
- Установите версию ruby из портов с другим префиксом (
/usr
вместо /usr/local
)
- Переустановите
rubygems
Ответ 2
У меня была аналогичная проблема на Ubuntu из-за наличия нескольких копий рубинов. (1,8 и 1,9,1). К сожалению, мне нужно обоим. Решение состоит в том, чтобы использовать:
$ sudo update-alternatives --config ruby
There are 2 choices for the alternative ruby (providing /usr/bin/ruby).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/ruby1.8 50 auto mode
1 /usr/bin/ruby1.8 50 manual mode
2 /usr/bin/ruby1.9.1 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode.
После того, как эта установка пакета завершилась успешно.
Ответ 3
ОК, я Ruby noob, но я немного изменил это значение, чем ответы здесь, поэтому, надеюсь, это поможет кому-то другому (tl; dr: я использовал RVM для переключения версии Ruby на ту же, что и ожидалось RubyGems).
Прежде всего, список всех Rubies, упомянутых Eimantas, был отличной отправной точкой:
> which -a ruby
/opt/local/bin/ruby
/Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
/Users/Brian/.rvm/bin/ruby
/usr/bin/ruby
/opt/local/bin/ruby
По умолчанию экземпляр Ruby, используемый системой, равен 1.8.7:
> ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]
в то время как версия, используемая Rubygems, была версией 1.9.2, управляемой RVM:
> gem env | grep 'RUBY EXECUTABLE'
- RUBY EXECUTABLE: /Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
Так что это определенно проблема. Я не активно использую Ruby сам (это просто зависимость системы сборки script, которую я пытаюсь запустить), поэтому мне было все равно, какая версия была активной для других целей. Поскольку rubygems ожидали 1.9.2, который уже управлялся RVM, я просто использовал RVM для переключения системы на использование версии 1.9.2 по умолчанию:
> rvm use 1.9.2
Using /Users/Brian/.rvm/gems/ruby-1.9.2-p290
> ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]
После этого проблема "no such file" исчезла, и мой script начал работать.
Ответ 4
Попробуйте запустить проект с помощью:
./script/server
вместо script/server
, если вы используете ruby 1.9.2 (from странную неспособность потребовать конфигурацию/загрузку после обновления до ruby 1.9.2)
Ответ 5
Я хотел бы добавить, что в моем случае rubygems
не был установлен.
Запуск sudo apt-get install rubygems
решил проблему!
Ответ 6
В случае, если кто-то еще сталкивается с этой проблемой: я смог исправить мой, найдя неуловимую папку "rubygems", которую я хотел использовать, и добавив ее в переменную среды RUB RUBYLIB.
find / -name "rubygems" -print
Как только вы его найдете, добавьте родительский каталог в свою среду. В bash, например:
export RUBYLIB=/path/to/parent
Теперь, если вы запустите gem, он должен забрать нужный каталог библиотеки, и вы уйдете и запустите.
Ответ 7
У меня была аналогичная проблема, просто запуская тривиальный ruby script, который просто требовал, чтобы драгоценный камень, который я хотел... получил это сообщение об ошибке. Когда я изменил заклинание:
ruby test.rb
к
ruby -rubygems test.rb
Казалось, что он работает.
Ответ 8
У меня была аналогичная проблема, и я решил, что, создав RubyLIB env.
В моей среде я использовал это:
export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB
Ответ 9
Если у вас установлено несколько рубинов, может быть достаточно просто удалить один из них, на MacosX с добавлением дополнительных портов, удалить порты ruby с помощью:
sudo port -f uninstall ruby
Ответ 10
Я также встретил ту же проблему, используя rbenv + пассажир + nginx. мое решение просто добавляет эти две строки кода в конфигурацию nginx:
passenger_default_user root;
passenger_default_group root;
подробный ответ здесь: fooobar.com/questions/93763/...
Ответ 11
У меня также была эта проблема.
Мое решение - удалить файл Gemfile.lock и снова установить gems: bundle install
Ответ 12
Просто запуск /bin/bash --login
помогло, странно. Не могу это объяснить.
Ответ 13
gem install bundler
исправил проблему для меня.