module ActiveFedora::Versionable

Public Instance Methods

create_version() click to toggle source
# File lib/active_fedora/versionable.rb, line 31
def create_version
  resp = ActiveFedora.fedora.connection.post(versions_uri, nil, slug: version_name)
  @versions = nil
  resp.success?
end
has_versions?() click to toggle source

Queries Fedora to figure out if there are versions for the resource.

# File lib/active_fedora/versionable.rb, line 38
def has_versions?
  ActiveFedora.fedora.connection.head(versions_uri)
  true
rescue Ldp::NotFound
  false
end
model_type() click to toggle source
# File lib/active_fedora/versionable.rb, line 9
def model_type
  if respond_to?(:metadata)
    metadata.ldp_source.graph.query({ predicate: ::RDF.type }).objects
  else
    resource.query({ subject: resource.rdf_subject, predicate: ::RDF.type }).objects
  end
end
restore_version(label) click to toggle source
# File lib/active_fedora/versionable.rb, line 45
def restore_version(label)
  resp = ActiveFedora.fedora.connection.patch(versions.with_label(label).uri, nil)
  @versions = nil
  reload
  refresh_attributes if respond_to?("refresh_attributes")
  resp.success?
end
versions(reload = false) click to toggle source

Returns an array of ActiveFedora::VersionsGraph::ResourceVersion objects. Excludes auto-snapshot versions from Fedora.

# File lib/active_fedora/versionable.rb, line 19
def versions(reload = false)
  response = versions_request

  return ActiveFedora::VersionsGraph.new unless response

  if reload
    @versions = ActiveFedora::VersionsGraph.new << versions_request.reader
  else
    @versions ||= ActiveFedora::VersionsGraph.new << versions_request.reader
  end
end

Private Instance Methods

bad_headers(response) click to toggle source
# File lib/active_fedora/versionable.rb, line 76
def bad_headers(response)
  "Unknown response format. Got '#{response.headers['content-type']}', but was expecting 'text/turtle'"
end
status_message(response) click to toggle source
# File lib/active_fedora/versionable.rb, line 72
def status_message(response)
  "Unexpected return value #{response.status} when retrieving datastream content at #{uri}\n\t#{response.body}"
end
version_name() click to toggle source
# File lib/active_fedora/versionable.rb, line 64
def version_name
  if versions.all.empty?
    "version1"
  else
    "version" + (versions.all.count + 1).to_s
  end
end
versions_request() click to toggle source
# File lib/active_fedora/versionable.rb, line 55
def versions_request
  return false unless has_versions?
  ActiveFedora.fedora.connection.get(versions_uri)
end
versions_uri() click to toggle source
# File lib/active_fedora/versionable.rb, line 60
def versions_uri
  uri + '/fcr:versions'
end