2010-01-06 69 views
0

我想创建一个capistrano任务来设置我的日志旋转文件。capistrano命令在没有任何反馈的情况下默默无闻

namespace :app do 
    task :setup_log_rotation,:roles => :app do 
    rotate_script = %Q{#{shared_path}/log/#{stage}.log { 
     daily 
     rotate #{ENV['days'] || 7} 
     size #{ENV['size'] || "5M"} 
     compress 
     create 640 #{user} #{ENV['group'] || user} 
     missingok 
    }} 

    put rotate_script, "#{shared_path}/logrotate_script" 

    "sudo cp #{shared_path}/logrotate_script /etc/logrotate.d/#{application}" 

    run "rm #{shared_path}/logrotate_script" 
    end 
end 

在我deploy.rb文件的最顶端我下面的行

set :use_sudo, false 

我完全错过了我的cp命令正默默地失败,我的终端上我觉得一切都很好。这是不好的。我应该如何编写cp代码以使incase cp由于某种原因失败(在这种情况下sudo命令失败),那么我应该在我的终端上获得反馈。

回答

0

解决了我自己的问题。

看看this的东西类似。

我加入这一行中deploy.rb

default_run_options[:pty] = true 

而且从

run "sudo cp #{shared_path}/logrotate_script /etc/logrotate.d/#{application}" 

改变这种

sudo "cp #{shared_path}/logrotate_script /etc/logrotate.d/#{application}"