capistrano中的脚本使用

在capistrano的deploy脚本中,你可以根据实际情况大量使用脚本,通常是shell脚本
比如
run   " your shell command "
用起来非常方便,但有点必须注意,如果你的脚本前后具有很强的依赖性,你因该这么写
run   "  command1 && command2  "
而不是
run  "  command1  "
run 
"  command2  "
 
这是个很细微差别,一般注意不到,结果就是焦头烂额
比如今天我就干了件蠢事,我想在某个目录下,产生一个配置文件
于是就
run   "  cd #{path}  "
run   "  script for creating a configure file  "
尝试了很多次,就是不能产生文件, 我很奇怪,capistrano我也用了一段时间了,执行脚本应该是没什么问题的,而且老早写的
run   " cd #{current_path} && mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path}  "
为什么就是能产生文件呢,把我的产生文件的脚本放到服务器上测也没问题,难道远程执行脚本有特殊的要求 ,我的脚本不符合这种特殊的要求?我就把这个脚本写成最简单以至不会出错的方式,结果还是不行,不得已查看源代码,也没看出所以然,我一直觉得我的脚本可能有问题,于是我放弃了用run,我采用了
command = " command1 && command2 "
invoke_command
( command ,   :via   =>   :run )
居然可行,难道非得这样用?经过几次尝试采用了
run   "  command1 && command2  "
  的写法居然可以,后来再看看以前的生成mongrel配置文件的这种写法,
看来不是偶然的,我实在没在意这种写法,我总觉得这是偷懒的写法,就好像装软件一样,make && make install分不分开写没什么区别,确实没什么区别,但那是在同一台机器上,前后的语境是连通的,换成目前远程脚本的方式,就有差别了,如果写成两个远程命令,前后语境不连通, 所以command1的路径下肯定不互有commnd2产生的文件,而且command2并不是没有产生文件,仅仅是它不在你希望的目录而是在~目录产生了文件,所以我的前面的那些猜测都是错误的,capistrano中的run运行shell脚本非常好,无需什么特殊设置,你完全可以通过合适的脚本来实现高级自动化的部署方案
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值