2

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

4

1 回答 1

6

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"
于 2012-07-22T00:25:29.423 回答