Module: Paperclip::Storage::Fedora
- Extended by:
- Fedora
- Included in:
- Fedora
- Defined in:
- lib/paperclip-fedora.rb,
lib/paperclip-fedora/railtie.rb
Defined Under Namespace
Classes: Railtie
Class Method Summary collapse
Instance Method Summary collapse
- #config? ⇒ Boolean
- #config_file ⇒ Object
- #exists?(style = default_style) ⇒ Boolean
- #fedora ⇒ Object
- #fedora_object ⇒ Object
- #flush_deletes ⇒ Object
- #flush_writes ⇒ Object
- #parse_config(config) ⇒ Object
- #setup! ⇒ Object
- #to_file(style = default_style) ⇒ Object
Class Method Details
.extended(base) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/paperclip-fedora.rb', line 9 def self.extended(base) require 'rubydora' base.instance_eval do if(!@options[:fedora_config]) @options[:fedora_config] = config_file end @fedora_config = parse_config(@options[:fedora_config]) @host = @fedora_config[:host] @port = @fedora_config[:port] @context = @fedora_config[:context] @custom_namespace = @options[:fedora_pid] @server_url = "http\://#{@host}\:#{@port}/#{@context}" @object_id = instance.uuid || @custom_pid || path() @path = @object_id @url = "#{@server_url}/objects/#{@path}/datastreams/:style/content" Paperclip.interpolates(:basename_clean) do |, style| s = File.basename(.original_filename, File.extname(.original_filename)) s.downcase! s.gsub!(/'/, '') s.gsub!(/[^A-Za-z0-9:\-]+/, ' ') s.strip! s.gsub!(/\ +/, '-') s end unless Paperclip::Interpolations.respond_to? :basename_clean end end |
Instance Method Details
#config? ⇒ Boolean
126 127 128 |
# File 'lib/paperclip-fedora.rb', line 126 def config? File.file? config_file end |
#config_file ⇒ Object
122 123 124 |
# File 'lib/paperclip-fedora.rb', line 122 def config_file Rails.root.join("config", "fedora.yml").to_s end |
#exists?(style = default_style) ⇒ Boolean
39 40 41 42 |
# File 'lib/paperclip-fedora.rb', line 39 def exists?(style=default_style) exists_bool = !fedora_object.datastreams[style.to_s].new? exists_bool end |
#fedora ⇒ Object
91 92 93 94 |
# File 'lib/paperclip-fedora.rb', line 91 def fedora @@repo ||= Rubydora.connect url: @server_url, user: @fedora_config[:user], password: @fedora_config[:password] @@repo end |
#fedora_object ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/paperclip-fedora.rb', line 96 def fedora_object @object_id = instance.uuid || @custom_pid || path() @path = @object_id @url = "#{@server_url}/objects/#{@path}/datastreams/:style/content" object = fedora.find(@object_id) saved_object = object.save paperclip_styles = object.datastreams['paperclip_styles'] if paperclip_styles.new? paperclip_styles.controlGroup = 'M' paperclip_styles.dsLabel = "Paperclip styles - Used for deletion tracking" paperclip_styles.content = " " paperclip_styles.mimeType = "text/plain" paperclip_styles.save end saved_object end |
#flush_deletes ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/paperclip-fedora.rb', line 74 def flush_deletes @queued_for_delete.uniq! @queued_for_delete.each do |path| object = fedora.find(path) pso = object.datastreams['paperclip_styles'] ps = pso.content ps.split(' ').each do |style| ds = object.datastreams[style] ds.delete log("Deleted #{path} - #{style} stream") end pso.content = " " pso.save end @queued_for_delete = [] end |
#flush_writes ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/paperclip-fedora.rb', line 54 def flush_writes @object_id = instance.uuid || @custom_pid || path() @path = @object_id @url = "#{@server_url}/objects/#{@path}/datastreams/:style/content" ps = fedora_object.datastreams['paperclip_styles'] style_list = ps.content @queued_for_write.each do |style, file| style_list = "#{style_list.strip} #{style.to_s}" ds = fedora_object.datastreams[style.to_s] ds.controlGroup = 'M' ds.file = file ds.dsLabel = "Paperclip: #{File.extname(file)} file" ds.save log("Added #{style} datastream to #{@object_id}") end ps.content = style_list.strip ps.save @queued_for_write = {} end |
#parse_config(config) ⇒ Object
113 114 115 116 |
# File 'lib/paperclip-fedora.rb', line 113 def parse_config config config = find_credentials(config).stringify_keys (config[Rails.env] || config).symbolize_keys end |
#setup! ⇒ Object
118 119 120 |
# File 'lib/paperclip-fedora.rb', line 118 def setup! FileUtils.cp(File.dirname(__FILE__) + "/../config/fedora.yml", config_file) unless config? end |
#to_file(style = default_style) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/paperclip-fedora.rb', line 44 def to_file(style=default_style) return @queued_for_write[style.to_s] if @queued_for_write[style.to_s] ds = fedora_object.datastreams[style.to_s] file = Tempfile.new([fedora_object.label, style.to_s]) file.binmode file.write(ds.read) file.rewind file end |