как загрузить passenger из apache с rvm и уникальными наборами драгоценных камней

#ruby-on-rails #rubygems #passenger #rvm

#ruby-on-rails #rubygems #пассажир #rvm

Вопрос:

У меня есть два веб-сайта, работающих на одном сервере. Оба используют passenger и rvm. Каждый веб-сайт имеет уникальный набор драгоценных камней rvm. Проблема, с которой я столкнулся, заключается в том, как я бы настроил passenger для запуска в apache.

Вот мои конфигурации apache passenger:

 ubuntu@www01:/etc/apache2/mods-enabled$ ls passenger.*
passenger.conf  passenger.load

ubuntu@www01:/etc/apache2/mods-enabled$ cat passenger.conf 
PassengerRoot /home/ubuntu/.rvm/gems/ruby-1.8.7-p334@snowcrash/gems/passenger-3.0.2
PassengerRuby /home/ubuntu/.rvm/wrappers/ruby-1.8.7-p334@snowcrash/ruby

ubuntu@www01:/etc/apache2/mods-enabled$ cat passenger.load 
LoadModule passenger_module /home/ubuntu/.rvm/gems/ruby-1.8.7-p334@snowcrash/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
  

Вы можете видеть выше, что я настроил apache для загрузки модуля / конфигураций passenger из ruby-1.8.7-p334@snowcrash набор драгоценных камней rvm. Моя проблема заключается в наличии дополнительного набора драгоценных камней для моего другого веб-сайта, ruby-1.8.7-p334@pixel-pets . Я думал об установленном passenger в глобальном наборе драгоценных камней, но я думаю, что он столкнется с проблемами при попытке загрузки драгоценных камней, уникальных для наборов драгоценных камней, специфичных для моего проекта.

Вот мои установленные драгоценные камни для каждого проекта:

 ubuntu@www01:/etc/apache2/mods-enabled$ rvm use 1.8.7@snowcrash
Using /home/ubuntu/.rvm/gems/ruby-1.8.7-p334 with gemset snowcrash
ubuntu@www01:/etc/apache2/mods-enabled$ gem list -l

*** LOCAL GEMS ***

actionmailer (2.3.11)
actionpack (2.3.11)
activerecord (2.3.11)
activeresource (2.3.11)
activesupport (2.3.11)
daemon_controller (0.2.6)
fastthread (1.0.7)
file-tail (1.0.5)
haml (3.0.25)
hpricot (0.8.4)
mysql (2.8.1)
passenger (3.0.2)
rack (1.1.2)
rails (2.3.11)
rake (0.8.7)
spruz (0.2.5)

ubuntu@www01:/etc/apache2/mods-enabled$ rvm use 1.8.7@pixel-pets
Using /home/ubuntu/.rvm/gems/ruby-1.8.7-p334 with gemset pixel-pets
ubuntu@www01:/etc/apache2/mods-enabled$ gem list -l

*** LOCAL GEMS ***

actionmailer (2.3.8)
actionpack (2.3.8)
activerecord (2.3.8)
activeresource (2.3.8)
activesupport (2.3.8)
backports (1.18.2)
border_patrol (0.1.0)
bson (1.3.0, 1.1.1)
bson_ext (1.3.0, 1.1.1)
faker (0.3.1)
jnunemaker-validatable (1.8.4)
mongo (1.1.1)
mongo_mapper (0.8.6)
nokogiri (1.4.3.1)
plucky (0.3.7)
rack (1.1.2)
rails (2.3.8)
rake (0.8.7)
will_paginate (2.3.12)
  

Ответ №1:

От:https://rvm.beginrescueend.com/integration/passenger

В вашем .rvmrc сделать:

 if [[ -s "/Users/sutto/.rvm/environments/ree-1.8.7-2010.02@my-app-name" ]] ; then
  . "/Users/sutto/.rvm/environments/ree-1.8.7-2010.02@my-app-name"
else
  rvm --create use  "ree-1.8.7-2010.02@my-app-name"
fi
  

Или просто создайте его с:

 cd path/to/project amp;amp; rvm use ree-1.8.7-2010.02@my-app-name --rvmrc --create
  

Затем в каждый проект rails добавьте новый файл config/setup_load_paths.rb и добавьте

 if ENV['MY_RUBY_HOME'] amp;amp; ENV['MY_RUBY_HOME'].include?('rvm')
  begin
    rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
    rvm_lib_path = File.join(rvm_path, 'lib')
    $LOAD_PATH.unshift rvm_lib_path
    require 'rvm'
    RVM.use_from_path! File.dirname(File.dirname(__FILE__))
  rescue LoadError
    # RVM is unavailable at this point.
    raise "RVM ruby lib is currently unavailable."
  end
end

# Select the correct item for which you use below.
# If you're not using bundler, remove it completely.
#
# # If we're using a Bundler 1.0 beta
# ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
# require 'bundler/setup'
#
# # Or Bundler 0.9...
# if File.exist?(".bundle/environment.rb")
#   require '.bundle/environment'
# else
#   require 'rubygems'
#   require 'bundler'
#   Bundler.setup
# end
  

Конечно, вы должны заменить /Users/sutto/.rvm свой путь к rvm и ruby-1.8.7-p334@snowcrash правильный набор драгоценных камней.

Комментарии:

1. Спасибо, Пабло. Это сработало, но пришлось создать config / setup_load_paths.rb для каждого проекта. Также использовался cd ~ / snowcrash / amp;amp; использование rvm 1.8.7@snowcrash —rvmrc —создать, чтобы создать .rvmrc для каждого каталога проекта.

2. Рад, что это сработало. Я только что обновил ответ вашими дополнениями.