Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 乘客轨道未识别RVM_Ruby On Rails_Passenger_Rvm - Fatal编程技术网

Ruby on rails 乘客轨道未识别RVM

Ruby on rails 乘客轨道未识别RVM,ruby-on-rails,passenger,rvm,Ruby On Rails,Passenger,Rvm,我已通过以下方式使用rvm转换为ree: rvm use ree@mygemset 并通过Gemfile和bundle安装kaminari gem 但Phusion乘客似乎仍在系统默认目录中查找gem。它说: Error message: Could not find kaminari-0.10.4 in any of the sources (Bundler::GemNotFound) 我错过了什么?Rails需要任何特定的配置来识别我使用的当前ruby版本和gemset???您需

我已通过以下方式使用rvm转换为ree:

rvm use ree@mygemset
并通过Gemfile和bundle安装kaminari gem

但Phusion乘客似乎仍在系统默认目录中查找gem。它说:

Error message:
    Could not find kaminari-0.10.4 in any of the sources (Bundler::GemNotFound)

我错过了什么?Rails需要任何特定的配置来识别我使用的当前ruby版本和gemset???

您需要指示乘客加载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环境:通过在Rails
    config
    目录中创建一个名为
    setup\u load\u path.rb
    的新文件,指示乘客加载RVM并使用
    .rvmrc
    文件中的gemset。该文件应包含以下内容:

    现在,当您重新启动应用程序时(
    触摸tmp/restart.txt
    ),您应该可以开始了


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

    只需在标有(Broandon)答案的步骤3中添加一个注释,因为我没有使用这些代码启动和运行Passenger 3

    错误消息如下所示:

    *** 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文档

    将config/setup\u load\u 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'
    

    问题解决了

    我按照建议的答案进行操作,它使我前进了一步,但随后我收到了一条错误消息:

    RVM-Ruby集成被提取到一个单独的gem中,默认情况下应使用RVM安装它>,删除
    $LOAD\u路径。取消移位
    行,一切都会恢复正常。
    更多详情请访问。(运行时错误)


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

    删除乘客4的
    config/setup\u load\u path.rb文件。它不是必需的。

    在默认系统目录中找不到它。它在寻找你告诉bundler去寻找的资料中的宝石。再看看你的档案。另外,您是如何安装kaminari gem的?创业板名单上写的是什么?你的乘客版本是什么?如何安装?(单机版或前面有另一台web服务器,如果有的话,是apache还是nginx)在我的特定设置中,我必须运行“rvm使用”ree@gemset在控制台中,在“bundle install”之前,作为.rvm文件在进入shell中的目录时未执行。在Passenger版本3之前(包括Passenger版本3),上述情况是正确的。乘客4允许多个ruby版本:&
    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'