как загрузить пассажира из apache с помощью rvm и уникальных наборов драгоценных камней - PullRequest
1 голос
/ 15 апреля 2011

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

Вот мои конфигурации пассажиров Apache:

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 для загрузки пассажирского модуля / конфигураций из набора гемов ruby-1.8.7-p334@snowcrash rvm. Моя проблема заключается в том, чтобы установить дополнительный гем для моего другого сайта, ruby-1.8.7-p334@pixel-pets. Я думал об установленном пассажире в глобальном наборе драгоценных камней, но думаю, что возникнут проблемы, когда он попытается загрузить драгоценные камни, уникальные для моих наборов драгоценных камней, характерных для моего проекта.

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

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 Ответ

2 голосов
/ 15 апреля 2011

From: https://rvm.beginrescueend.com/integration/passenger/

В вашем .rvmrc do:

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 && rvm use ree-1.8.7-2010.02@my-app-name --rvmrc --create

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

if ENV['MY_RUBY_HOME'] && 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 на правильный набор гемов.

...