红宝石轨道 – 旅客不知道RVM的Rails

我已经转移到ree使用rvm:
rvm use ree@mygemset

并通过Gemfile和捆绑安装安装了kaminari宝石.

但是Phusion乘客似乎仍然在系统默认目录中寻找宝石.它说:

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

注意:如果您希望自动信任所有.rvmrcs,这是一个简单的事情:

rvm_trust_rvmrcs_flag=1

到你的个人或系统范围的rvmrc(〜/ .rvmrc和/ etc / rvmrc).
>指导乘客设置RVM环境:指导乘客加载RVM,并在.rvmrc文件中使用gemset,方法是在名为setup_load_paths.rb的Rails配置目录中创建一个新文件(所有配置/ 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'

现在,当你重新启动你的应用程序(触摸tmp / restart.txt),你应该很好去.

你应该注意,Passenger一次只能运行一个版本的Ruby;如果Passenger是在ree以外的地方设置的,您可能需要重新安装Passenger和/或重做生成的包装脚本.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...