class Nanoc::Core::CompilationItemRepView

Constants

FILE_APPEAR_TIMEOUT

How long to wait before the requested file appears.

This is a bit of a hack – ideally, Nanoc would know that the file is being generated, and wait the appropriate amount of time.

Public Instance Methods

compiled_content(snapshot: nil) click to toggle source

Returns the compiled content.

@param [String] snapshot The name of the snapshot from which to

fetch the compiled content. By default, the returned compiled content
will be the content compiled right before the first layout call (if
any).

@return [String] The content at the given snapshot.

# File lib/nanoc/core/compilation_item_rep_view.rb, line 51
def compiled_content(snapshot: nil)
  @context.dependency_tracker.bounce(_unwrap.item, compiled_content: true)
  @context.compiled_content_store.compiled_content(rep: _unwrap, snapshot: snapshot)
end
item_view_class() click to toggle source

@abstract

# File lib/nanoc/core/compilation_item_rep_view.rb, line 13
def item_view_class
  Nanoc::Core::CompilationItemView
end
raw_path(snapshot: :last) click to toggle source

Returns the item rep’s raw path. It includes the path to the output directory and the full filename.

@param [Symbol] snapshot The snapshot for which the path should be

returned.

@return [String] The item rep’s raw path.

# File lib/nanoc/core/compilation_item_rep_view.rb, line 24
def raw_path(snapshot: :last)
  @context.dependency_tracker.bounce(_unwrap.item, compiled_content: true)

  res = @item_rep.raw_path(snapshot: snapshot)

  unless @item_rep.compiled?
    Fiber.yield(Nanoc::Core::Errors::UnmetDependency.new(@item_rep, snapshot))
  end

  # Wait for file to exist
  if res
    start = Time.now
    sleep 0.05 until File.file?(res) || Time.now - start > FILE_APPEAR_TIMEOUT
    raise Nanoc::Core::Errors::InternalInconsistency, "File raw_path did not appear in time (#{FILE_APPEAR_TIMEOUT}s): #{res}" unless File.file?(res)
  end

  res
end