Приложение Sinatra на Passenger не может найти стойку (используя RVM) - PullRequest
4 голосов
/ 24 марта 2011

Я боролся с промежуточным сервером для этого приложения Sinatra в течение двух дней.Я очень расстроенПоследняя ошибка - ошибка Ruby, переданная Пассажиром:

нет такого файла для загрузки - rack

Файл nginx.conf показывает, какой Ruby мы используеми где находится Пассажир:

passenger_root /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5;
passenger_ruby /usr/local/rvm/rubies/ruby-1.9.2-p180/bin/ruby;

ОК, для нас это Ruby 1.9.2.

Конфигурация vhost включает в себя:

root /var/www/staging-proweb/current/rack/public;
passenger_enabled on;
rack_env          staging;

, а в файле Rackup есть:

require 'rubygems'
require 'sinatra'
require 'myapp1.rb'

run Sinatra::Application

, который затем отправляет нас в файл myapp1.rb, который включает

require 'rubygems'
require 'rack'
require 'sinatra'

... и я полагаю, что синатра требует от стойки

Драгоценный камень там:

~$ which ruby
/usr/local/rvm/rubies/ruby-1.9.2-p180/bin/ruby
~$ gem list rack

*** LOCAL GEMS ***

rack (1.2.2)
rack-flash (0.1.1)

ОшибкаСудя по первым трем строкам трассировки стека, он находится в файле в каталоге RVM:

0 /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb   36  in `require'
1 /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb   36  in `require'
2 /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/rack/application_spawner.rb  219 in `load_rack_app'

Что мне делать дальше?Я довольно озадачен.

1 Ответ

3 голосов
/ 24 марта 2011

Похоже, проблема была в значении конфигурации passenger_ruby. RVM предоставляет оболочку для настройки соответствующей среды для этого Ruby (включая гемы), поэтому строка passenger_ruby должна иметь значение

    passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby;

Имея это в виду, мы, кажется, работаем.

...