require "delegate"

class ManualWithPublishTasks < SimpleDelegator

  def initialize(manual, attrs)
    super(manual)
    @publish_tasks = attrs.fetch(:publish_tasks)
  end

  def publish_tasks
    @publish_tasks.to_enum
  end

end

require "delegate"

class ManualWithPublishTasks < SimpleDelegator

  def initialize(manual, publish_tasks:)
    super(manual)
    @publish_tasks = publish_tasks
  end

  def publish_tasks
    @publish_tasks.to_enum
  end

end

Use Ruby keyword args in ManualWithPublishTasks
Use Ruby keyword args in ManualWithPublishTasks

I think that using language features instead of custom code makes this
easier to understand.
