Capistrano:部署开发中使用的文件以外的文件

时间:2012-07-21 21:36:06

标签: ruby-on-rails deployment capistrano

我有一个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命令更改值)?

1 个答案:

答案 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"