Ruby Passenger: нет такого файла для загрузки bundler

Я установил 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 поэтому я знаю, что bundler установлен, но я думаю, что он смотрит в не то место для камней.

похоже, что пассажир установил 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

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

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

1 ответов


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

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

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

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

/opt/local/ree/

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

другая проблема может быть связана с вашим 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

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

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

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

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

источник /и т. Д./Баш.bashrc и

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

which ruby
which gem
which rake
gem env
...

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

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

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

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

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

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

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