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

Stp*_*tpn 2 deployment capistrano ruby-on-rails

我有一个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
Run Code Online (Sandbox Code Playgroud)

对于生产我将需要:

 #!/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
Run Code Online (Sandbox Code Playgroud)

是否有一个解决方案涉及动态更改文件,同时部署(使用一些gsub命令,更改值)?

小智 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"
Run Code Online (Sandbox Code Playgroud)