Ruby on rails 卡皮斯特拉诺构型
我对capistrano ext gem的多级模块的可变范围有一些问题。我目前有,在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
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
就可以让一切正常工作?