0

我在 Vagrant VM 上使用 Chef-solo 设置了 RVM 就好了,但是我对为什么bundler在 rails 项目中找不到它感到困惑。

因此,配置后我看到:

上次登录时间:2012 年 10 月 4 日星期四 15:23:58 从 10.0.2.2
vagrant@vm:~$ ruby​​ -v
ruby 1.9.3p327(2012-11-10 修订版 37606)[x86_64-linux]
vagrant@vm:~$ 宝石列表

*** 当地宝石 ***

大十进制 (1.1.0)
捆绑器 (1.3.2)
daemon_controller (1.1.1)
快速线程(1.0.7)
io 控制台 (0.3)
json (1.5.4)
迷你测试(2.5.1)
乘客 (3.0.18)
机架 (1.5.2)
耙子 (10.0.3, 0.9.2.2)
rdoc (3.9.4)
rubygems 捆绑器 (1.1.1)
rvm (1.11.3.6)

转到我看到的项目目录:

vagrant@vm:~$ cd /www/vm/rails/current/
==================================================== ==============================
= 通知 =
==================================================== ==============================
= RVM 在当前目录中遇到了新的或修改过的 .rvmrc 文件 =
= 这是一个 shell 脚本,因此可能包含任何 shell 命令。=
= =
= 仔细检查该文件的内容以确保内容是 =
= 在信任它之前是安全的!(选择下面的v[iew]查看内容)=
==================================================== ==============================
您希望信任此 .rvmrc 文件吗?(/www/vm/rails/current/.rvmrc)
y[es], n[o], v[iew], c[ancel]> y
mkdir:无法创建目录`/usr/local/rvm/gems/ruby-1.9.3-p327@vm':权限被拒绝
gemset vm 不存在,正在创建。
mkdir:无法创建目录`/usr/local/rvm/gems/ruby-1.9.3-p327@vm':权限被拒绝
mkdir:无法创建目录`/usr/local/rvm/gems/ruby-1.9.3-p327@vm':权限被拒绝

但是现在,再也找不到捆绑软件了,而且我在激活 RVM 时也遇到了问题……有什么想法可以调试吗?

$ rvm 使用 ruby​​-1.9.3-p327
请注意 `rvm gem ...` 已被删除,请尝试使用 `gem ` 或 `rvm all do gem `。(见:'rvm用法')

PS我的节点json基本上是这样的:https ://github.com/mulderp/chef-rails-stack

4

1 回答 1

1

对于调试,我使用https://github.com/mpapis/rvm-binary/blob/master/cookbooks/binary/recipes/default.rb#L11

class Chef::Resource::Script
  def log_code command
    if Chef::Config[:log_level] == :debug
      code "{ #{command}; _ret=$?; echo \"Exit status was $_ret.\"; exit $_ret; } 2>&1 |
tee /var/log/#{@command.to_s.gsub(/ /,"_")}.log; exit ${PIPESTATUS[0]}"
    else
      code command
    end
  end
end

然后代替code使用log_code,它将保存登录/var/log/#{@command.to_s.gsub(/ /,"_")}.log

至于 RVM 与 Chef 的轻松集成,请查看https://gist.github.com/sevos/5076747

deploy_user = node[:deploy][:user]
deploy_user_home = File.join('/', 'home', deploy_user)
rvm_version = "head"

execute "install_rvm_for_deploy_user" do
  user deploy_user
  command "curl -L https://get.rvm.io | bash -s #{rvm_version}"
  environment "HOME" => deploy_user_home
  creates "#{deploy_user_home}/.rvm"
end

node['buildpack']['ruby_versions'].each do |ruby_version|
  execute "install_rvm_ruby_#{ruby_version}" do
    user deploy_user
    environment "HOME" => deploy_user_home
    command "#{deploy_user_home}/.rvm/bin/rvm install #{ruby_version} --autolibs=3"
  end
end

file "#{deploy_user_home}/.rvmrc" do
  content 'export rvm_trust_rvmrcs_flag=1'
  owner deploy_user
  mode 0644
end
于 2013-03-08T17:36:53.817 回答