【问题标题】:Apache 2, Passenger 3 and RVM setupApache 2、Passenger 3 和 RVM 设置
【发布时间】:2011-12-28 13:08:08
【问题描述】:

我想用 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 已创建并包含所有必需的 gem,所以现在在 environment.rb 文件中我加载了一个 gem 文件,需要 require 'postmark-rails' 它显示错误 no such file to load -- postmark-rails (MissingSourceFile) 意味着它没有加载正确的 gemset。如何弄清楚?

【问题讨论】:

    标签: ruby-on-rails apache2 rvm passenger


    【解决方案1】:

    .rvmrc 文件运行不正常。所以我搜索并找到了创建.rvmrc 文件的正确方法。

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

    这将创建正确的.rvmrc 文件。然后将此代码放入 Rails 2 应用程序的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
    

    对于 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 配合得很好。

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多