【问题标题】:Capistrano configurationCapistrano 配置
【发布时间】:2010-02-01 21:29:08
【问题描述】:

我在 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_settings(YAML.load_file("config/deploy.yml")['staging'])

【问题讨论】:

    标签: ruby-on-rails capistrano


    【解决方案1】:

    你把这弄得太复杂了。

    只需将常用代码放入 deploy.rb 文件即可:

    role :app, domain
    role :web, domain
    role :db,  domain, :primary => true
    

    以及 config/deploy/staging.rb、production.rb 等文件中的阶段相关设置。

    然后运行 ​​cap deploy,就像你说的:cap staging deploy

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

    set :deploy_to, "/var/www/#{domain}_staging"

    其余的在 deploy.rb 中

    【讨论】:

      【解决方案2】:

      在 deploy.rb 中尝试 CAPDEV='staging' cap deployENV['CAPDEV']

      【讨论】:

      • 没有办法只输入$ cap staging deploy 就可以运行了吗?
      【解决方案3】:

      伊莱,

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

      set :deploy_env,  ARGV[0].to_sym
      

      如果您愿意,也可以不带符号。但请注意,这可能需要一个环境来处理简单的事情,比如运行

      cap -vT
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-05
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多