Class: Pindo::TaskSystem::StdoutRedirector

Inherits:
Object
  • Object
show all
Defined in:
lib/pindo/module/task/output/stdout_redirector.rb

Overview

Stdout 重定向器用于在任务执行期间捕获标准输出和标准错误,将其路由到输出管理器

Class Method Summary collapse

Class Method Details

.redirect_for_task(task_id, output_manager) { ... } ⇒ Object

为任务重定向 stdout/stderr

Parameters:

  • task_id (String)

    任务 ID

  • output_manager (OutputSink)

    输出管理器

Yields:

  • 执行任务的代码块



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/pindo/module/task/output/stdout_redirector.rb', line 10

def self.redirect_for_task(task_id, output_manager)
  # 保存原始 stdout/stderr
  original_stdout = $stdout
  original_stderr = $stderr

  begin
    # 重定向到自定义 IO
    $stdout = CustomIO.new(task_id, output_manager, :stdout)
    $stderr = CustomIO.new(task_id, output_manager, :stderr)

    yield
  ensure
    # 恢复原始 stdout/stderr
    $stdout = original_stdout
    $stderr = original_stderr
  end
end