Ruby on rails 如何在Capistrano中显示rake输出

Ruby on rails 如何在Capistrano中显示rake输出,ruby-on-rails,ruby,rake,capistrano,Ruby On Rails,Ruby,Rake,Capistrano,我在服务器上运行rake任务时使用了一个类似于rails应用程序deploy.rb的代码段 desc 'Invoke rake task on the server' task :invoke do fail 'no task provided' unless ENV['task'] on roles(:app) do within release_path do with rails_env: fetch(:rails_env) do

我在服务器上运行rake任务时使用了一个类似于rails应用程序deploy.rb的代码段

  desc 'Invoke rake task on the server'
  task :invoke do
    fail 'no task provided' unless ENV['task']

    on roles(:app) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, ENV['task']
        end
      end
    end
  end
rake任务运行正常,但我希望看到rake任务的输出显示在我运行capistrano任务的控制台中


puts命令在rake任务中不会出现。

如果处于调试模式,如果我没有弄错,capistrano会打印出命令的输出。您可能将日志级别设置为
:info
。只需在deploy.rb中找到该行并将其更改为(如果不存在,则添加该行):

如果您只想对单个命令使用此选项,或者我错了,并且上述解决方案不适用于您,请检查此答案(如果仍然有效,则不知道):

更新:在游戏任务中使用Rails logger而不是puts如何:

Rails.logger.debug "test"

如果处于调试模式,如果我没有弄错的话,capistrano会打印出命令的输出。您可能将日志级别设置为
:info
。只需在deploy.rb中找到该行并将其更改为(如果不存在,则添加该行):

如果您只想对单个命令使用此选项,或者我错了,并且上述解决方案不适用于您,请检查此答案(如果仍然有效,则不知道):

更新:在游戏任务中使用Rails logger而不是puts如何:

Rails.logger.debug "test"

它已经处于调试模式,但没有显示来自rake的输出。有趣的是显示了dB:migrate的输出。您是否尝试了我答案中链接的第二个解决方案。看起来与您需要的非常相似。capistrano日志级别已设置为debug没有任何区别。出于兴趣我试了一下,但没什么不同。我确实收到一个输出,说rake任务正在运行“DEBUG[4b23c943]rake test run at 2015-08-21 12:43:08+1200”,但不是rake任务中“put”语句的输出。它已经处于调试模式,但没有显示rake的输出。有趣的是显示了dB:migrate的输出。您是否尝试了我答案中链接的第二个解决方案。看起来与您需要的非常相似。capistrano日志级别已设置为debug没有任何区别。出于兴趣我试了一下,但没什么不同。我确实收到一个输出,说rake任务正在运行“DEBUG[4b23c943]rake test run at 2015-08-21 12:43:08+1200”,但不是rake任务中“put”语句的输出。我只是发现它取决于服务器。在我的暂存服务器上没有返回输出,而在我的生产服务器上有输出…我刚刚发现它取决于服务器。在我的暂存服务器上没有返回的输出,而在我的生产服务器上有输出。。。