Ruby on rails 卡皮斯特拉诺构型

Ruby on rails 卡皮斯特拉诺构型,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,我对capistrano ext gem的多级模块的可变范围有一些问题。我目前有,在config/deploy/staging.rb中 set(:settings) { YAML.load_file("config/deploy.yml")['staging'] } set :repository, settings["repository"] set :deploy_to, settings["deploy_to"] set :branch, settings["branch

我对capistrano ext gem的多级模块的可变范围有一些问题。我目前有,在
config/deploy/staging.rb

set(:settings) { YAML.load_file("config/deploy.yml")['staging'] }

set :repository,  settings["repository"]
set :deploy_to,   settings["deploy_to"]
set :branch,      settings["branch"]
set :domain,      settings["domain"]
set :user,        settings["user"]

role :app, domain
role :web, domain
role :db,  domain, :primary => true
我的
config/deploy/production.rb
文件类似。这看起来不太干。理想情况下,我想我希望所有内容都在deploy.rb文件中。如果当前阶段有一个变量集,那么一切都会非常干净

更新:我找到了一个解决方案

我在
deploy.rb
中定义了这个函数:

def set_settings(params)
  params.each_pair do |k,v|
    set k.to_sym, v
  end
  if exists? :domain
    role :app, domain
    role :web, domain
    role :db,  domain, :primary => true
  end
end

然后,我的
staging.rb
文件就是
set\u设置(YAML.load\u文件(“config/deploy.yml”)['staging'])
试试deploy.rb中的
CAPDEV='staging'cap deploy
ENV['CAPDEV']
,这太复杂了

只需将通用代码放入deploy.rb文件:

role :app, domain
role :web, domain
role :db,  domain, :primary => true
以及config/deploy/staging.rb、production.rb等文件中的阶段相关设置

然后运行capdeploy,如您所说:cap staging deploy

您的stage.rb文件也可以使用公共变量。例如,我的暂存文件只有一行:

set:deploy_to“/var/www/#{domain}_staging”

其余的在deploy.rb中

是的,您可以进行cap登台部署。在部署文件的顶部执行此操作

set :deploy_env,  ARGV[0].to_sym
如果您愿意,也可以不带符号。但请注意,这可能需要一个环境来完成一些简单的事情,比如运行

cap -vT

没有办法只需键入
$cap staging deploy
就可以让一切正常工作?