Rubygems. LoadError в Rails - PullRequest
       0

Rubygems. LoadError в Rails

5 голосов
/ 06 сентября 2010

Каждый раз, когда я запускаю свои приложения на Rails, я получаю LoadError со следующим выводом.

На Rails 2.3.8:

no such file to load -- sqlite3/sqlite3_native
<internal:lib/rubygems/custom_require>:29:in `require'

На Rails 3.0.0:

no such file to load -- bundler
<internal:lib/rubygems/custom_require>:29:in `require'

Я запускаю приложения в производственном режиме на компьютере разработчика с помощью Nginx + Passenger.

В чем причина этой проблемы?Как я могу это решить?

Спасибо.

Debian GNU / Linux 5.0.6;

Ruby 1.9.2;

Rubygems 1.3.7;

Ruby on Rails 2.3.8, 3.0.0;

Nginx 0.8.50;

Passenger 2.2.15;

sqlite3-ruby 1.3.1;

bundler 1.0.0.rc.6.

Обновлено


Все мои драгоценные камни установлены непривилегированным пользователем влокальный каталог /home/<usernam>/.gem.Если это поможет, вот вывод gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux]
  - INSTALLATION DIRECTORY: /home/&#60;username&#62;/.gem
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /home/&#60;username&#62;/.gem/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/&#60;username&#62;/.gem
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
     - :gemhome => "/home/&#60;username&#62;/.gem"
     - :gempath => ["/home/&#60;username&#62;/.gem"]
  - REMOTE SOURCES:
     - http://rubygems.org/

Обновлено


Я решил эту проблему.Его источником было то, что я определил пользовательский путь к самоцвету .То есть я добавил в файл ~/.gemrc следующие строки:

:gemhome: /home/&#60;username&#62;/.gem
:gempaths:
  - /home/&#60;username&#62;/.gem

Таким образом, все мои драгоценные камни были помещены в указанный каталог, но не в каталог по умолчанию.По какой-то причине Rubygems не нашел его там и выдал исключение.

Когда я удалил эти строки из файла, пути по умолчанию были установлены для Rubygems и после того, как я установил все необходимые гемы и загрузил все приложения Railsначал работать.

Еще раз, условия ошибки:

  1. Nginx + Passenger;
  2. Gempath установлен на /home/<unprivileged_user>/.gem в ~/.gemrc;
  3. Сценарий init.d создается и добавляется в последовательность загрузки (update-rc.d nginx defaults);
  4. Система перезагружается, сервер запускается автоматически;
  5. http://localhost/my_rails_app;
  6. LoadError;нет такого файла для загрузки - ;: 29: в `require '.

Почему Rubygems не может найти драгоценные камни в пользовательском расположении, но может найти их по умолчанию? Вот в чем вопрос.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010

У меня тоже была эта проблема при использовании RVM - я должен был указать gemset или что-то и не делать его специфичным для проекта.В любом случае, прочитайте это Руководство по rvm , если вы хотите знать основы RVM и попытаться указать новый набор gem для вашей текущей папки / проекта, установить новый набор rails для этого набора, а затем использовать его.gemset.Например, чтобы создать новый набор гемов для rails версии 2.3.8:


$ rvm gemset создайте rails238


$ rvm ruby-1.8.7@rails238


$ gem install rails -v 2.3.8


Тогда, если все прошло в соответствии с типом плана rvm gemset, используйте [gemsetName] или выполните rvm gemset list, чтобы увидеть список установленныхЧтобы увидеть, работает ли rails, попробуйте rails -v, и вы увидите rails 2.3.8

0 голосов
/ 06 сентября 2010

Проверьте вашу систему, чтобы найти, где установлены ваши рубины и драгоценные камни (вы можете сделать это с помощью "какого рубина" и "какого камня").Обычно они устанавливаются в одну папку (/ usr / bin или / usr / local).Если они находятся в разных местах, может быть ошибка загрузки.Просто предложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...