我有一个rails应用程序,它使用一些bash脚本,这些脚本中有不同的值(路径)用于开发和生产。我想使用capistrano使用适合生产的值来部署应用程序。 例如,在#{Rails.root} +'script.sh'中:
#!/bin/bash
/usr/local/bin/convert -colorspace sRGB -background transparent -font Myriad-Pro-Condensed -fill grey0 -stroke yellow -strokewidth 2 -size 640x480 -gravity $3 label:"$2" $1.png
对于制作,我需要:
#!/bin/bash
/usr/bin/convert -colorspace sRGB -background transparent -font Myriad-Pro-Condensed -fill grey0 -stroke yellow -strokewidth 2 -size 640x480 -gravity $3 label:"$2" $1.png
是否有解决方案涉及动态更改文件,同时部署(使用某些gsub命令更改值)?
答案 0 :(得分:5)
ERB模板可能是最简单的。在模板内部,您可以访问所有Capistrano变量,这样您就可以知道您所处的阶段,等等。上限代码看起来像这样:
template = File.read(File.join(File.dirname(__FILE__), "templates/script.sh.erb"))
result = ERB.new(template).result(binding)
put result, "#{release_path}/script.sh"