ruby-on-rails - 乘客上的 Rails 无法识别 RVM

标签 ruby-on-rails passenger rvm

我已通过以下方式使用 rvm 转移到 ree:

rvm use ree@mygemset

并通过 Gemfile 和 bundle install 安装了 kaminari gem。

但是 Phusion 乘客似乎仍在系统默认目录中寻找 gem。它说:
Error message:
    Could not find kaminari-0.10.4 in any of the sources (Bundler::GemNotFound)

我缺少什么? Rails 需要任何特定配置来识别我正在使用的当前 ruby​​ 版本和 gemset?

最佳答案

您需要指示Passenger 加载RVM,然后为您的gemset 设置环境。最简单的方法包括三个步骤:

  • 创建一个 .rvmrc文件 : 在 Rails 项目的根目录中,创建一个名为 .rvmrc 的文件包含用于加载 gemset 的 RVM 命令。例如:
    rvm use ree@gemset
    
  • 信任 .rvmrc文件 :部署新的 .rvmrc 后文件到您的服务器,将目录更改为您的 rails 项目。 RVM 应该询问您是否要信任您的 .rvmrc文件;只需按照说明操作并输入 yes当被问到时。如果没有出现提示,请使用以下命令信任您的 .rvmrc :
    rvm rvmrc trust
    

    注意:如果您希望自动信任所有 .rvmrc s,这是一个简单的添加问题:
    rvm_trust_rvmrcs_flag=1
    

    到您的个人或系统范围的 rvmrc(分别为 ~/.rvmrc/etc/rvmrc)。
  • 指导乘客设置 RVM 环境 :指示乘客加载 RVM 并在您的 .rvmrc 中使用 gemset通过在 Rails 中创建一个新文件来创建文件 config名为 setup_load_paths.rb 的目录(所以 config/setup_load_paths.rb 总共)。该文件应包含 https://gist.github.com/870310 的内容:
    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
        raise "RVM ruby lib is currently unavailable."
      end
    end
    
    # This assumes Bundler 1.0+
    ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
    require 'bundler/setup'
    

    现在,当您重新启动应用程序 ( touch tmp/restart.txt ) 时,您应该一切顺利。

  • 你应该注意到Passenger 一次只能运行一个版本的Ruby;如果Passenger 是在ree 以外的其他东西下设置的,您可能需要重新安装Passenger 和/或重做它生成的包装器脚本。

    关于ruby-on-rails - 乘客上的 Rails 无法识别 RVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307463/

    相关文章:

    ruby - Zlib 在新的 ubuntu server/rvm/gemset 中不断引起问题

    ruby-on-rails - Rails 'to_sql' 没有 '\'

    nginx - 如何更新乘客的日志级别?

    ruby - Phusion 乘客无法自由出港

    ruby - iconv rvm 安装错误

    ruby - 无法运行 "gem list"!

    ruby-on-rails - 如何使用常量名称而不是其分配的值将常量数组转换为字符串

    ruby-on-rails - 如何命名模型\类?

    ruby-on-rails - 如何加快 Rails 应用程序 JSON 渲染速度?

    ruby-on-rails - Nginx 使用 capistrano 滚动重启 Rails 应用程序