Я использую Capistrano для развертывания файлов конфигурации для унаследованного приложения, не являющегося Ruby, для которого по непонятным причинам необходимо задавать параметры с полным именем целевого хоста, например,
name: myservice-stg
identifier: myservice-stg-1.example.org:8675
baseURI: http://myservice-stg-1.example.org:8675
Кроме того, для данной среды нет никакой разницы между файлами конфигурации, поэтому я хотел бы иметь возможность просто определить шаблон (в примере используется Mustache, но может быть ERB или любой другой):
name: myservice-stg
identifier: {{fqhn}}:8675
baseURI: http://{{fqhn}}:8675
Моя текущая идея для взлома - просто использовать gsub
и StringIO
:
config_tmpl = File.open('/config/src/config.txt')
config_txt = config_tmpl.gsub('{{fqhn}}', host.hostname)
upload!(StringIO.new(config_txt), 'dest/config.txt')
Но, похоже, должно быть более стандартное, готовое решение.