#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. Рад, что это сработало. Я только что обновил ответ вашими дополнениями.