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