【问题标题】:Rails on Passenger not recognizing RVM乘客上的 Rails 无法识别 RVM
【发布时间】:2011-07-15 12:21:09
【问题描述】:

我已使用 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??

【问题讨论】:

  • 这不是在您的默认系统目录中查找。它正在您告诉捆绑器查找的来源中寻找宝石。再次查看您的 Gemfile。另外,您是如何安装 kaminari gem 的?宝石清单怎么说?
  • 您的乘客版本是什么?你如何安装它? (独立或在它前面有另一个 Web 服务器,如果是的话?apache 或 nginx)

标签: ruby-on-rails passenger rvm


【解决方案1】:

删除乘客 4 的 config/setup_load_paths.rb 文件。不需要。

【讨论】:

    【解决方案2】:

    我遵循了建议的答案,它让我前进,但随后我收到一条错误消息:

    RVM - Ruby 集成被提取到一个单独的 gem,它应该默认安装 > 与 RVM,删除$LOAD_PATH.unshift 行,一切都应该再次正常。 访问https://rvm.io/integration/passenger了解更多详情。 (运行时错误)

    乘客现在拥有一颗宝石。我的错误是没有在我使用的 ruby​​ 版本和 gemset 中安装它。一旦我这样做了 - 一切都很顺利。

    【讨论】:

      【解决方案3】:

      只是对 Marked(Broandon 的)答案的第 3 步的补充说明,因为我没有使用这些代码启动和运行我的 Passenger3。

      错误信息如下:

      *** Phusion Passenger: no passenger_native_support.bundle found for the current Ruby interpreter. Compiling one...
      # mkdir -p /Users/jerry/.rvm/gems/ruby-1.9.3-p194@xxx/gems/passenger-3.0.18/ext/ruby/ruby-1.9.3-x86_64-macosx
      # cd /Users/jerry/.rvm/gems/ruby-1.9.3-p194@xxx/gems/passenger-3.0.18/ext/ruby/ruby-1.9.3-x86_64-macosx
      Unable to locate the RVM path. Your RVM installation is probably too old. Please update it with 'rvm get head && rvm reload && rvm repair all'.
      

      参考消息“无法找到 RVM 路径”,我查看了 RVM 文档 https://rvm.io/integration/passenger/

      将 config/setup_load_paths.rb 编辑为:

      if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
        begin
          gems_path = ENV['MY_RUBY_HOME'].split(/@/)[0].sub(/rubies/,'gems')
          ENV['GEM_PATH'] = "#{gems_path}:#{gems_path}@global"
          require 'rvm'
          RVM.use_from_path! File.dirname(File.dirname(__FILE__))
        rescue LoadError
          raise "RVM gem is currently unavailable."
        end
      end
      
      # If you're not using Bundler at all, remove lines bellow
      ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
      require 'bundler/setup'
      

      问题解决了!

      【讨论】:

        【解决方案4】:

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

        1. 创建一个.rvmrc 文件:在 Rails 项目的根目录中,创建一个名为 .rvmrc 的文件,其中包含用于加载 gemset 的 RVM 命令。例如:

          rvm use ree@gemset
          
        2. 相信.rvmrc 文件:将新的.rvmrc 文件部署到服务器后,将目录更改为您的rails 项目。 RVM 应该询问您是否要信任您的 .rvmrc 文件;只需按照说明进行操作,并在询问时输入yes。如果没有出现提示,使用以下命令信任你的.rvmrc

          rvm rvmrc trust
          

          注意:如果您希望自动信任所有.rvmrcs,只需添加:

          rvm_trust_rvmrcs_flag=1
          

          到您的个人或系统范围的 rvmrc(分别为~/.rvmrc/etc/rvmrc)。

        3. 指导乘客设置 RVM 环境:通过在 Rails config 目录中创建一个名为 @987654339 的新文件,指导乘客加载 RVM 并使用 .rvmrc 文件中的 gemset @(所以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 和/或重做它生成的包装脚本。

        【讨论】:

        • 在我的特定设置中,我必须在“捆绑安装”之前在控制台中运行“rvm use ree@gemset”,因为在进入 shell 目录时没有执行 .rvm 文件。
        • 以上内容适用于乘客版本 3,包括乘客版本 3。乘客 4 允许多个 ruby​​ 版本:Apache & Nginx
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 2014-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 2014-04-09
        相关资源
        最近更新 更多