Назад | Перейти на главную страницу

Настройка Apache 2, Passenger 3 и RVM

Я хочу настроить сервер RoR с Apache2 + Passenger3 + RVM, это мои конфигурации

# 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) Это означает, что не загружается правильный гемсет. Как разобраться?

В .rvmrc файл не работал должным образом. Итак, я искал и нашел правильный способ создать .rvmrc файл.

в домашнем каталоге использовалась эта команда rvm 1.8.7@myapp --rvmrc --create

Это создает надлежащие .rvmrc файл. Затем введите этот код в config/setup_load_paths.rb для приложения Rails 2

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

и для 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.