Rails / Passenger: нет такого файла для загрузки - деньги (MissingSourceFile) - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь развернуть приложение Rails (которое отлично работает в разработке) на рабочем сервере.Я установил и настроил Apache, Passenger и необходимые гемы.После перезапуска apache и перехода на сервер я получаю следующую ошибку:

Exception PhusionPassenger::UnknownError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- money (MissingSourceFile))

gem list money показывает:

*** LOCAL GEMS ***

money (3.0.5)

Сеанс irb на сервере:

irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'money'
=> true

Камень требуется в config/environment.rb:

require 'money'

Что здесь происходит?

Редактировать: Камень был установлен как root:

# ls -l /usr/lib/ruby/gems/1.8/gems/money-3.0.5/lib
total 8
drwx------ 2 root root 4096 Sep  2 10:26 money
-rw-r--r-- 1 root root 1284 Sep  2 10:26 money.rb

Редактировать 2: После успеха на этом контрольно-пропускном пункте я понял, что Passenger как бы создан для использования с Ruby Enterprise Edition, поэтому я попытался установить его.После этого я использовал версию gem для Ruby Enterprise, чтобы установить все необходимые гемы.Теперь, когда я перезагружаю Apache и перехожу на свой сервер, я получаю:

Exception LoadError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- logger)

У меня нет проблем с регистратором в старых или новых версиях Ruby:

# which irb
/usr/bin/irb
# irb
irb(main):001:0> require 'logger'
=> true
irb(main):002:0> exit
# /opt/ruby-enterprise-1.8.7-2010.02/bin/irb 
irb(main):001:0> require 'logger'
=> true

Что-то должнопродолжать работу с путями или разрешениями, но я точно следовал инструкциям установщиков Passenger и Ruby Enterprise Edition.Есть другие идеи?

Ответы [ 3 ]

2 голосов
/ 02 сентября 2010

Apache / Passenger запускает процесс ruby ​​от имени пользователя root (или www-data), убедитесь, что вы не установили Gem в локальном хранилище.

Вам, вероятно, нужно стать суперпользователем перед установкой гема.


Ответ 2:

Правильный способ требовать самоцвета - не использовать require, а использовать

config.gem "money"
1 голос
/ 03 сентября 2010

вы используете одну и ту же версию ruby ​​для обоих?

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

Спасибо всем за помощь.Мы изучили еще несколько вопросов и обнаружили, что некоторые из необходимых файлов (я думаю, сами драгоценные камни) были установлены с неправильными разрешениями (недоступны для чтения пользователю, который запускает Apache / Passenger).Я не уверен, почему это произошло, так как они были установлены обычным способом как root (может быть, проблема была в нестандартном umask?), Но изменение прав доступа к этим файлам устранило проблему.

...