Apache 2,Passenger 3和RVM设置

时间:2011-12-28 13:08:09

标签: ruby-on-rails apache2 rvm passenger

我想用Apache2 + Passenger3 + RVM设置一个RoR服务器,这些是我的配置

# Passenger Apache Integartion
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.8.7-p352@global/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.8.7-p352@global/gems/passenger-3.0.11
PassengerRuby /usr/local/rvm/wrappers/ruby-1.8.7-p352@global/ruby

这是我的.rvmrc

if [[ -s "/usr/local/rvm/gems/ruby-1.8.7-p352@myapp" ]] ; then
  . "/usr/local/rvm/gems/ruby-1.8.7-p352@myapp"
else
  rvm --create use  "1.8.7@myapp"
fi

myapp gemset已创建并包含所有必需的宝石,因此现在在environment.rb文件中我加载一个宝石文件需要require 'postmark-rails'并且它显示错误no such file to load -- postmark-rails (MissingSourceFile)表示它没有加载正确的gemset。怎么搞清楚?

1 个答案:

答案 0 :(得分:3)

.rvmrc文件效果不佳。所以我搜索出来并找到创建.rvmrc文件的正确方法。

在目录home中使用此命令rvm 1.8.7@myapp --rvmrc --create

这会创建正确的.rvmrc文件。然后将此代码放在config/setup_load_paths.rb for Rails 2 app

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

和For Rails 3

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

# 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

代码取自http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration。它解决了我的问题,乘客与rvm一起工作很好。