Каждый раз, когда я запускаю свои приложения на 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/<username>/.gem
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /home/<username>/.gem/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /home/<username>/.gem
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--no-ri --no-rdoc"
- :gemhome => "/home/<username>/.gem"
- :gempath => ["/home/<username>/.gem"]
- REMOTE SOURCES:
- http://rubygems.org/
Обновлено
Я решил эту проблему.Его источником было то, что я определил пользовательский путь к самоцвету .То есть я добавил в файл ~/.gemrc
следующие строки:
:gemhome: /home/<username>/.gem
:gempaths:
- /home/<username>/.gem
Таким образом, все мои драгоценные камни были помещены в указанный каталог, но не в каталог по умолчанию.По какой-то причине Rubygems не нашел его там и выдал исключение.
Когда я удалил эти строки из файла, пути по умолчанию были установлены для Rubygems и после того, как я установил все необходимые гемы и загрузил все приложения Railsначал работать.
Еще раз, условия ошибки:
- Nginx + Passenger;
- Gempath установлен на
/home/<unprivileged_user>/.gem
в ~/.gemrc
; - Сценарий
init.d
создается и добавляется в последовательность загрузки (update-rc.d nginx defaults
); - Система перезагружается, сервер запускается автоматически;
- http://localhost/my_rails_app;
- LoadError;нет такого файла для загрузки - ;: 29: в `require '.
Почему Rubygems не может найти драгоценные камни в пользовательском расположении, но может найти их по умолчанию? Вот в чем вопрос.