Ruby Passenger: такого загрузочного файла нет - PullRequest
6 голосов
/ 18 июня 2011

Я установил Phusion Passenger с Nginx, настроил Nginx так, чтобы он указывал на правильный каталог, затем я запустил каталог webapp, и он загрузил gemfiles, но не может найти их.

Когда я захожу на сайт, я получаю стандартную страницу ошибки Пассажира, которая гласит:

Error message:
no such file to load -- bundler

Вот полная ошибка: http://tinypic.com/view.php?pic=vpx36r&s=7

Я сделал gem install bundler, так что я знаю, что установлен упаковщик, но я думаю, что он ищет неправильные места для драгоценных камней.

Похоже, что Passenger установил ruby-enterprise-1.8.7, и похоже, что 1.8 уже был установлен в этом окне.

gem env дает мне следующее:

  - RUBYGEMS VERSION: 1.4.2
  - RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /opt/local/ruby-enterprise-1.8.7-2010.01/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/bin
  - RUBYGEMS PLATFORMS:
      - ruby
      - x86_64-linux
    - GEM PATHS:
      - /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
 - /root/.gem/ruby/1.8
    - GEM CONFIGURATION:
       - :update_sources => true
       - :verbose => true
       - :benchmark => false
       - :backtrace => false
       - :bulk_threshold => 1000
    - REMOTE SOURCES:
       - http://rubygems.org/

Из того, что я прочитал, похоже, проблема пути, но я не знаю, как лучше всего это исправить.

Вот вывод

какой рубин:

/opt/local/ree/bin/ruby

какой комплект:

/opt/local/ree/bin/bundle

Я запустил пакетную установку в этом каталоге, и он дал мне:

Your bundle is complete! It was installed into ./vendor/bundle

1 Ответ

8 голосов
/ 20 июня 2011

похоже, у вас есть некоторые проблемы с путями (как вы уже заявили). попробуйте проверить почему у вас есть два разных пути для вашей установки ruby.

Я имею в виду, что согласно выводу вашей gem env, у вас есть какая-то установка на

 /opt/local/ruby-enterprise-1.8.7-2010.01/

но у вас также есть рубин и булдер под

/opt/local/ree/

Итак, начните отсюда, чтобы проверить, все ли пути правильны, и / или у вас нет двойной установки (ну, достаточно просто проверить, согласованы ли ваши ENV).

Другая проблема может быть связана с вашим nginx.conf, у вас должно быть что-то вроде этого:

[...]
 http {
  passenger_root /your/path/to/passenger/gem;
  passenger_ruby /path/to/ruby;
  [...]
 }

ОБНОВЛЕНИЕ (только что увидел дополнительные комментарии с помощью nginx.conf):

как видите, есть проблема с путями: у вас есть два пути для установки ruby ​​и gems:

/opt/local/ruby-enterprise....

и

/opt/local/ree

вы должны удалить последний (не физически, просто просмотрите ENV, чтобы указать на первый)

EDIT: чтобы изменить свой env, вы можете добавить следующую строку в ваш / etc / bash.bashrc (или любой файл, загруженный из вашей оболочки по умолчанию):

PATH="/opt/local/ruby-enterprise-1.8.7-2010.01/bin:$PATH"

затем выйдите из системы и войдите в систему, или для быстрого тестирования запустите эту команду из оболочки:

source /etc/bash.bashrc

, попробуйте еще раз, чтобы посмотреть, какой двоичный файл используется по умолчанию:

which ruby
which gem
which rake
gem env
...

все должно иметь префикс / opt / local / ruby-enterprise-1.8.7-2010.01 / (это то, что используется в конфигурациях nginx и пассажирских).

UPDATE2 : из комментариев оказалось, что у вас есть как минимум 3 установки ruby:

  • ruby ​​из вашего менеджера пакетов в / usr / lib / ruby ​​/ (вы используете ubuntu linux?)
  • рубин в / opt / local / ree /
  • рубин в /opt/local/ruby-enterprise-....

На данный момент лучше всего сделать:

  • удалите все рубины в / opt / local / и все их драгоценные камни
  • удаление (очистка) системы с помощью пакетов ruby ​​(вам это не нужно)

  • установка и настройка RVM: https://rvm.io

  • переустановить пассажира с помощью RVM: https://rvm.io/integration/passenger/
  • исправить nginx.conf для использования пассажирского пути и ruby ​​
...