我有一个安装RVM和Ruby的Chef配方。我在配方中使用execute
资源来运行以下命令:
rvm alias create default 2.0
但是这并没有将我的默认Ruby版本设置为2.0。如果我直接在主机上运行此命令,它确实有效,因为当我键入ruby -v
时,版本设置为2.0但是当我尝试通过Chef配方ruby -v
运行它时仍然返回1.8。
这是我的资源声明:
execute "set_ruby_to_version_#{version}" do
command "rvm alias create default #{version}"
action :run
end
怎么通过Chef食谱不起作用?我知道有一本可以处理RVM的食谱,但我仍然想知道为什么这不起作用。
答案 0 :(得分:1)
因为rvm 1.25 rvm在$rvm_path/bin
中没有创建包装器,如果你依赖这个包装器(它已经在你的PATH
中),那么在创建别名后运行它:
rvm wrapper default --no-prefix
如果您需要特定gem的包装器,请在命令后添加它的名称,例如:
rvm wrapper default --no-prefix haml
它只会创建这个包装器:$rvm_path/bin/haml
其他方法是将自动生成的包装器添加到PATH
:
PATH=$rvm_path/gems/ruby-2.1.0/wrappers:$PATH
答案 1 :(得分:0)
rvm alias create default 2.1.2
rvm use 2.1.2
适合我。