我正在使用 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
我目前对 hack 的想法只是使用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')
但似乎应该有一个更标准的、开箱即用的解决方案。