Настройка нескольких проектов Rails с помощью nginx, rvm и пассажира?

Я использую nginx, rvm и пассажира для запуска веб-сервера для проекта Rails (т.е. проекта1). Для этого проекта определен специальный набор драгоценных камней. Теперь мне нужно запустить второй проект (т. е. Project2), который использует другой набор драгоценных камней (и имеет другой определенный набор драгоценных камней). Как я могу это сделать?

Вот как выглядит мой файл конфигурации для nginx:

http {
  passenger_root /var/www/project1/vendor/cache/ruby/1.9.1/gems/passenger-3.0.
19;
  passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p320@global/ruby;

  # ...

  server {                                                    
    listen        80;                                                     
    server_name   project1.example.com;           

    root              /var/www/project1/public;             
    passenger_enabled on;
    rails_env         production;      

    # ...                       

  }      

    server {                                                    
    listen        80;                                                     
    server_name   project2.example.com;           

    root              /var/www/project2/public;             
    passenger_enabled on;
    rails_env         production;      

    # ...                       

  }              

  # ...
}

project1 работает как положено. Тем не менее, проект2 дает мне отсутствующие ошибки драгоценного камня.

Could not find i18n-0.6.4 in any of the sources (Bundler::GemNotFound)

Обратите внимание, какpassage_root указывает на пассажирский гем в проекте1.

Любые указатели на то, как я могу запустить оба проекта, были бы очень признательны. Спасибо.


person Tim Okuma    schedule 22.04.2013    source источник


Ответы (1)


В документации по rvm есть раздел по интеграции с Passenger/nginx. Решение находится там и требует, чтобы вы добавили новый файл config/setup_load_paths.rb. Подробности об этом файле можно найти в документации.

Кстати, если вы используете Rails3, упаковщик — лучший выбор для управления драгоценными камнями, специфичными для приложения, чем наборы драгоценных камней.

person Jeff Paquette    schedule 22.04.2013
comment
Спасибо, Джефф. Я использую Rails 3 с упаковщиком и Gemfiles. Как это меняет решение? - person Tim Okuma; 22.04.2013
comment
Если вы связываете свои драгоценные камни с поставщиком/пакетом с помощью bundle install --path vendor/bundle, то они по своей природе зависят от проекта. - person Jeff Paquette; 22.04.2013
comment
› ..bundler лучше подходит для управления гемами для конкретных приложений, чем гемсеты. Я бы сказал, что лучший вариант - использовать оба. наборы драгоценных камней разделяют все для каждого проекта, в то время как пакет управляет версиями драгоценных камней в рамках данного проекта (в наборе драгоценных камней для проекта). - person Jo P; 17.05.2013