Logging 使用Capistrano 3部署时用于迁移的串行输出

Logging 使用Capistrano 3部署时用于迁移的串行输出,logging,deployment,migration,capistrano,dbmigrate,Logging,Deployment,Migration,Capistrano,Dbmigrate,当我使用capistrano/rails中的customdb:migrate任务时,没有显示有关迁移处理的信息。要更改,我自定义了db:migrate任务,并将log_级别更改为:debug info '[deploy:migrate] Run `rake db:migrate`' within release_path do with rails_env: fetch(:rails_env) do has_verbosity = defined?(SSH

当我使用capistrano/rails中的customdb:migrate任务时,没有显示有关迁移处理的信息。要更改,我自定义了db:migrate任务,并将log_级别更改为:debug

  info '[deploy:migrate] Run `rake db:migrate`'
    within release_path do
      with rails_env: fetch(:rails_env) do
        has_verbosity = defined?(SSHKit) && SSHKit.respond_to?(:config) && SSHKit.config.respond_to?(:output_verbosity)
        if has_verbosity
          verbosity_level = SSHKit.config.output_verbosity
          SSHKit.config.output_verbosity = 0 # Logger::DEBUG
        end

        execute :rake, "db:migrate"

        SSHKit.config.output_verbosity = verbosity_level if has_verbosity
      end
    end

看起来一切正常,但有关处理迁移的信息会在所有迁移完成后显示出来。但我想按步骤显示这些信息(1.迁移1已完成;2.关于添加到日志的信息;3.迁移2已完成;4.关于添加到日志的信息)。现在它的工作原理是:1。迁移1完成;2.迁移2完成;4.有关添加到日志中的所有迁移的信息。

谢谢您的帮助。我已使用
Rake::task['deploy:migrate']禁用了默认迁移任务。清除
后,这对我不起作用。我研究了gem sshkit-1.8.1,发现只需将
set:pty,true
添加到deploy.rb中即可。

您确定没有两次定义迁移任务吗?它可能第一次运行时没有日志记录,第二次运行时有日志记录(运行速度非常快,这就是为什么您可以一次看到所有输出)。默认情况下,定义Rake任务是可添加的,因此在声明您的任务之前,必须显式取消定义默认迁移任务。