class Rake::FileTask

FileTask 是一种包含基于时间的依赖关系的 Task。如果任何 FileTask 的前提条件的时间戳晚于此 Task 代表的文件的时间戳,则必须重建该文件(使用提供的动作)。

私有类方法

scope_name(scope, task_name) 点击切换源代码

根据此类 Task 的规则将 scope 应用于 Task 名称。基于文件的 Task 在创建名称时会忽略 scope。

# File rake-13.2.1/lib/rake/file_task.rb, line 53
def scope_name(scope, task_name)
  Rake.from_pathname(task_name)
end

公共实例方法

needed?() 点击切换源代码

是否需要此文件 Task?如果它不存在,或者它的时间戳已过期,则需要。

# File rake-13.2.1/lib/rake/file_task.rb, line 16
def needed?
  begin
    out_of_date?(File.mtime(name)) || @application.options.build_all
  rescue Errno::ENOENT
    true
  end
end
timestamp() 点击切换源代码

文件 Task 的时间戳。

# File rake-13.2.1/lib/rake/file_task.rb, line 25
def timestamp
  begin
    File.mtime(name)
  rescue Errno::ENOENT
    Rake::LATE
  end
end

私有实例方法

out_of_date?(stamp) 点击切换源代码

是否存在任何前提条件的时间晚于给定时间戳?

# File rake-13.2.1/lib/rake/file_task.rb, line 36
def out_of_date?(stamp)
  all_prerequisite_tasks.any? { |prereq|
    prereq_task = application[prereq, @scope]
    if prereq_task.instance_of?(Rake::FileTask)
      prereq_task.timestamp > stamp || @application.options.build_all
    else
      prereq_task.timestamp > stamp
    end
  }
end