capistrano命令在没有任何反馈的情况下无声地失败

时间:2010-01-06 16:30:59

标签: 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命令失败)然后我应该在我的终端上得到反馈。

1 个答案:

答案 0 :(得分: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}"