Пассажир с Nginx не может найти рельсы - PullRequest
1 голос
/ 08 сентября 2010

Я уже несколько дней пытаюсь настроить nginx для пассажиров и продолжаю сталкиваться с проблемами.Когда я захожу в приложение Rails через браузер, он говорит: Missing the Rails 2.3.8 gem. Please gem install -v=2.3.8 rails, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.

Если я набираю gem list в моем терминале, он показывает: rails (3.0.0, 2.3.8, 2.3.5)

Что смешно, пассажир будетнайти мои рубиновые камни просто отлично, когда я использую их с Apache на той же машине!Но я хотел бы поэкспериментировать с nginx, потому что Apache не делает то, что я хочу.

На машине установлен сервер Ubuntu 10.04

  • which ruby Показывает: /usr/local/bin/ruby (REE)
  • Это директивы для пассажиров в файле nginx.conf:
    • passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15; passenger_ruby /usr/local/bin/ruby;

Ответы [ 2 ]

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

@ Ник Ришав прав в том, что вы должны быть осторожны при установке Ruby Enterprise Edition (REE) рядом с системой Ruby. Неправильная установка REE может вызвать некоторые очень странные вещи.

Хотя Rails 3.0 может быть причиной ваших проблем, моя интуиция говорит мне, что ваша настоящая проблема - это один из пропущенных шагов при установке REE. Но, на всякий случай, это не сработает, быстрый поиск в Google покажет вам множество хороших учебников, показывающих вам как разместить приложение Rails с Phusion Passenger для Nginx . Ну, давай попробуем, ладно!

REE отлично работает вместе с системой Ruby, но вы должны установить его в свой собственный каталог. Например:

/opt/ruby-enterprise-X.X.X/bin/ruby

Другой вариант - установить только REE, но этот вариант не подходит для вас. Я подозреваю, что когда Nginx запускается, он находит REE, как вы указали. Вы установили Passenger for Nginx из стека REE?

/opt/ruby-enterprise-X.X.X/bin/passenger-install-apache2-module

Если нет, возможно, вы захотите разобраться в этом. Я предполагаю, что вы сделали.

Из вашего описания не похоже, что вы сказали REE, где найти свои драгоценные камни. Для этого вам нужно установить REE в качестве интерпретатора Ruby по умолчанию. Для этого добавьте запись в файл / etc / environment . В Ubuntu каталогом является / etc / environment . Добавьте каталог bin REE в переменную окружения PATH, например:

PATH="/opt/ruby-enterprise-x.x.x/bin:/usr/local/sbin:/usr/local/bin"

Размещение REE первым в PATH установит его в качестве интерпретатора Ruby по умолчанию.

Затем перезапустите Nginx, вот так:

sudo /etc/init.d/nginx restart

Надеюсь, это поможет. У меня была доля проблем с развертыванием, и это действительно может расстраивать. Не желал бы этого никому ... Удачи!

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

В качестве проверки вы уверены, что ваш пассажир установлен в правильной версии ruby.в основном

Оба рубина имеют отдельные гемы, что означает, что вы должны установить другой в одном ..

Проверьте в каталоге /usr/local/lib/ruby/gems/1.8/gemsесли рельсы 2.3.8 присутствует.Вам необходимо установить его в этот рубин.

Оба рубина будут иметь отдельные файлы bin для установки.

возможно, / usr / bin / gem для системного рубина, а / usr / local / bin / gem для вашей установкиREE

...