Нет такого файла для загрузки - 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 начал работать.

Ответ 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

исправил проблему для меня.