Конфигуриране на множество Rails проекти с nginx, rvm и пасажер?

Използвам nginx, rvm и пасажер, за да стартирам уеб сървър за Rails проект (т.е. project1). Този проект има специфичен набор от скъпоценни камъни, дефиниран за него. Сега трябва да стартирам втори проект (т.е. 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 работи според очакванията. Project2 обаче ми дава грешки при липсващи скъпоценни камъни.

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

Обърнете внимание как pathway_root сочи към скъпоценния камък за пътника в project1.

Всякакви указания за това как мога да управлявам и двата проекта ще бъдат много оценени. Благодаря ти.


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


Отговори (1)


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

Между другото, ако използвате Rails3, bundler е по-добър избор за управление на скъпоценни камъни, специфични за приложение, отколкото набори от скъпоценни камъни.

person Jeff Paquette    schedule 22.04.2013
comment
Благодаря Джеф. Използвам Rails 3 с bundler и Gemfiles. Как това променя решението? - person Tim Okuma; 22.04.2013
comment
Ако групирате вашите скъпоценни камъни в доставчик/пакет с bundle install --path vendor/bundle, тогава те са специфични за проекта по природа - person Jeff Paquette; 22.04.2013
comment
› ..bundler е по-добър избор за управление на скъпоценни камъни, специфични за приложения, отколкото набори от скъпоценни камъни. Бих казал, че най-добрият вариант е да използвате и двете. gemsets разделят всичко на базата на проект, докато bundler управлява версиите на gems в рамките на даден проект (в gemset за проекта). - person Jo P; 17.05.2013