这可能是一个新手红宝石问题.我有几个库和应用程序需要部署到几个不同的主机.所有应用程序和库将共享这些主机的一些常用设置 - 例如主机名,数据库服务器/用户/通道等.
我的目标是做一些事情:
cap host1 stage deploy cap host2 stage deploy cap host1 prod deploy # ...
我的问题是如何在所有deploy.rb文件中包含这些常用设置?更具体地说,我想创建一个我可以包含的rb文件,它包含一些常用设置和几个主机特定的任务定义:
set :use_sudo, false # set some other options task :host1 do role :app, "host1.example.com" role :web, "host1.example.com" role :db, "host1.example.com", :primary => true set :rodb_host, "dbhost" set :rodb_user, "user" set :rodb_pass, "pass" set :rodb_name, "db" end task :host2 do #... end deploy.task :carsala do transaction do setup update_code symlink end end
然后在我的所有deploy.rb文件中"包含"此文件,我在其中定义stage,prod等,并根据需要覆盖任何"常见"配置参数.任何建议,将不胜感激.我尝试了一些不同的东西,但是我从所有这些中获得了错误.
编辑:我试过了
require 'my_module'
但我得到错误抱怨未定义的任务对象.
我只是尝试了一点,我发现你必须:
load 'config/my_module'
我可以在这里放置所有常用定义,然后将其加载到deploy.rb中.
从文档中可以看出,加载并执行文件.或者,需要尝试加载指定的库.我并不完全确定真正的区别,但是当前应用程序符号空间与库需要之间存在一些分离(因此有关未定义任务对象的错误),当您执行此操作时,这不是问题加载.