2011-04-15 47 views
1

我有相同的服務器上運行兩個網站。兩者都使用乘客和rvm。每個網站都有一個獨特的rvm gemset。我遇到的問題是我怎麼會設置乘客apache的啓動。如何從RVM和獨特的寶石阿帕奇加載乘客設置

這裏是我的Apache配置的乘客:

[email protected]:/etc/apache2/mods-enabled$ ls passenger.* 
passenger.conf passenger.load 

[email protected]:/etc/apache2/mods-enabled$ cat passenger.conf 
PassengerRoot /home/ubuntu/.rvm/gems/[email protected]/gems/passenger-3.0.2 
PassengerRuby /home/ubuntu/.rvm/wrappers/[email protected]/ruby 

[email protected]:/etc/apache2/mods-enabled$ cat passenger.load 
LoadModule passenger_module /home/ubuntu/.rvm/gems/[email protected]/gems/passenger-3.0.2/ext/apache2/mod_passenger.so 

您可以從上面看到的,我已經配置了Apache裝載乘客模塊/從[email protected] RVM寶石組配置。我的問題在於有我的其他網站的額外寶石集,[email protected]。我也想過,在全球創業板的集裝乘客,但我認爲這將看到的問題時,它會嘗試加載寶石獨特的到我的項目的具體寶石套。

這裏是我對每個項目安裝寶石:

[email protected]:/etc/apache2/mods-enabled$ rvm use [email protected] 
Using /home/ubuntu/.rvm/gems/ruby-1.8.7-p334 with gemset snowcrash 
[email protected]:/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) 

[email protected]:/etc/apache2/mods-enabled$ rvm use [email protected] 
Using /home/ubuntu/.rvm/gems/ruby-1.8.7-p334 with gemset pixel-pets 
[email protected]:/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) 

回答

2

來源:https://rvm.beginrescueend.com/integration/passenger/

在你.rvmrc做:

if [[ -s "/Users/sutto/.rvm/environments/[email protected]" ]] ; then 
    . "/Users/sutto/.rvm/environments/[email protected]" 
else 
    rvm --create use "[email protected]" 
fi 

,或只與創建它:

cd path/to/project && rvm use [email protected] --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路徑,並通過[email protected]正確的寶石。

+0

謝謝,巴勃羅。這工作,但必須爲每個項目創建一個config/setup_load_paths.rb。還可以使用cd〜/ snowcrash /&& rvm使用[email protected] --rvmrc --create爲_each_項目目錄創建.rvmrc。 – sybind 2011-04-16 17:28:36