0

我有一个脚本,它正在我的服务器上安装 Ruby/RVM(以及更多),以准备好部署 Rails 项目的环境。该脚本在 ruby​​ 中,并使用 net-ssh 库来完成这项工作。

在安装了 RVM、Ruby 之后,我想创建项目 Gemset:

connection do |conn|
  logger("Create RVM environment #{ruby_version}@#{project_name}")
  conn.exec!("#{rvmsudo_path} #{rvm_path} gemset create #{project_name}")   
end

我在下面创建了我的 gemset,一切都很好:

/usr/local/rvm/gems/ruby-1.9.3-p286@my_project_name

这是我的 rvm/ruby 的 Capistrano 设置:

set :rvm_type, :system
set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")

当我尝试使用 capistrano 进行部署时,我得到:

/usr/local/rvm/environments/ruby-1.9.3-p286@my_project_name:权限被拒绝

该文件夹中实际上缺少环境文件“ruby-1.9.3-p286@my_project_name”。我需要登录服务器并导航到我的项目,以便 .rvmrc 文件触发环境的创建(rvm --create my_project_name)。我想避免这最后一步。你知道如何触发这个环境的创建吗?(我虽然在创建 Gemset 时会创建它)

4

2 回答 2

0

RVM 支持通过 capistrano 安装自身,安装 rubies 和创建 gemset,你应该使用它:

于 2012-10-19T02:43:45.107 回答
0

基本上需要加载 RVM 环境才能远程编写脚本。 https://rvm.io/workflow/scripting/

您可以使用 net-ssh 运行以下命令来执行此操作:

conn.exec!("source "/usr/local/rvm/scripts/rvm; rvm --create ruby-1.9.3-p286@my_project_name")

它将创建您的环境和相关的 gemset。

于 2012-10-19T11:22:19.817 回答