Настройка 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
файл, который я загружаю gem файл требует require 'postmark-rails'
И это показывает ошибку no such file to load -- postmark-rails (MissingSourceFile)
Означает, что он не загружает правильный gemset. Как это понять?
1 ответ
.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
и для рельсов 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.