我已经使用 rvm 转向 ree:
rvm use ree@mygemset
并通过 Gemfile 和捆绑安装安装了 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
file:在 Rails 项目的根目录中,创建一个名为的文件.rvmrc
其中包含用于加载 gemset 的 RVM 命令。例如:
rvm use ree@gemset
-
相信.rvmrc
file:一旦部署了新的.rvmrc
文件到您的服务器,将目录更改为您的 Rails 项目。 RVM 应该询问您是否愿意信任您的.rvmrc
文件;只需按照说明进行操作并输入yes
当被问到时。如果没有出现提示,请使用以下命令来信任您的.rvmrc
:
rvm rvmrc trust
注意:如果您希望自动信任所有.rvmrc
s,只需添加以下内容即可:
rvm_trust_rvmrcs_flag=1
到您的个人或系统范围的 rvmrc (~/.rvmrc
and /etc/rvmrc
, 分别)。
-
指导乘客设置RVM环境:指示乘客加载RVM并使用您的宝石组.rvmrc
通过在 Rails 中创建一个新文件来创建文件config
名为的目录setup_load_paths.rb
(so 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 和/或重做它生成的包装器脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)