Class: RemoteFiles::File
- Inherits:
-
Object
- Object
- RemoteFiles::File
- Defined in:
- lib/remote_files/file.rb
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#content ⇒ Object
readonly
Returns the value of attribute content.
-
#content_type ⇒ Object
readonly
Returns the value of attribute content_type.
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#identifier ⇒ Object
readonly
Returns the value of attribute identifier.
-
#last_update_ts ⇒ Object
readonly
Returns the value of attribute last_update_ts.
-
#populate_stored_in ⇒ Object
readonly
Returns the value of attribute populate_stored_in.
-
#stored_in ⇒ Object
readonly
Returns the value of attribute stored_in.
Class Method Summary collapse
Instance Method Summary collapse
- #current_url ⇒ Object
- #delete ⇒ Object
- #delete! ⇒ Object
- #delete_now!(parallel: false) ⇒ Object
-
#initialize(identifier, options = {}) ⇒ File
constructor
A new instance of File.
- #logger ⇒ Object
- #logger=(logger) ⇒ Object
- #missing_stores ⇒ Object
- #options ⇒ Object
- #read_write_stores ⇒ Object
- #retrieve! ⇒ Object
- #store! ⇒ Object
- #store_once! ⇒ Object
- #stored? ⇒ Boolean
- #stored_everywhere? ⇒ Boolean
- #stores ⇒ Object
- #synchronize! ⇒ Object
- #url(store_identifier = nil) ⇒ Object
Constructor Details
#initialize(identifier, options = {}) ⇒ File
Returns a new instance of File.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/remote_files/file.rb', line 5 def initialize(identifier, = {}) known_keys = [:identifier, :stored_in, :content_type, :configuration, :content, :populate_stored_in, :last_update_ts, :errors] known_keys.each do |key| [key] ||= .delete(key.to_s) end @identifier = identifier @stored_in = ([:stored_in] || []).map(&:to_sym) # TODO: Refactor so that there are two classes: `File` and `FileCopy` @content = .delete(:content) @last_update_ts = [:last_update_ts] || Time.now @content_type = [:content_type] @configuration = RemoteFiles::CONFIGURATIONS[([:configuration] || :default).to_sym] @logger = [:logger] @populate_stored_in = [:populate_stored_in] @errors = [:errors] @options = end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def configuration @configuration end |
#content ⇒ Object (readonly)
Returns the value of attribute content.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def content @content end |
#content_type ⇒ Object (readonly)
Returns the value of attribute content_type.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def content_type @content_type end |
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def errors @errors end |
#identifier ⇒ Object (readonly)
Returns the value of attribute identifier.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def identifier @identifier end |
#last_update_ts ⇒ Object (readonly)
Returns the value of attribute last_update_ts.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def last_update_ts @last_update_ts end |
#populate_stored_in ⇒ Object (readonly)
Returns the value of attribute populate_stored_in.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def populate_stored_in @populate_stored_in end |
#stored_in ⇒ Object (readonly)
Returns the value of attribute stored_in.
3 4 5 |
# File 'lib/remote_files/file.rb', line 3 def stored_in @stored_in end |
Class Method Details
.from_url(url) ⇒ Object
31 32 33 |
# File 'lib/remote_files/file.rb', line 31 def self.from_url(url) RemoteFiles.default_configuration.file_from_url(url) end |
Instance Method Details
#current_url ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/remote_files/file.rb', line 71 def current_url prioritized_stores = configuration.stores.map(&:identifier) & @stored_in return nil if prioritized_stores.empty? url(prioritized_stores[0]) end |
#delete ⇒ Object
112 113 114 115 116 117 118 119 |
# File 'lib/remote_files/file.rb', line 112 def delete begin delete! true rescue RemoteFiles::Error => e false end end |
#delete! ⇒ Object
108 109 110 |
# File 'lib/remote_files/file.rb', line 108 def delete! configuration.delete!(self) end |
#delete_now!(parallel: false) ⇒ Object
121 122 123 |
# File 'lib/remote_files/file.rb', line 121 def delete_now!(parallel: false) configuration.delete_now!(self, parallel: parallel) end |
#logger ⇒ Object
27 28 29 |
# File 'lib/remote_files/file.rb', line 27 def logger @logger ||= configuration ? configuration.logger : RemoteFiles.logger end |
#logger=(logger) ⇒ Object
23 24 25 |
# File 'lib/remote_files/file.rb', line 23 def logger=(logger) @logger = logger end |
#missing_stores ⇒ Object
61 62 63 |
# File 'lib/remote_files/file.rb', line 61 def missing_stores configuration.stores - stores end |
#options ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/remote_files/file.rb', line 35 def @options.merge( :identifier => identifier, :stored_in => stored_in, :content_type => content_type, :configuration => configuration.name, :populate_stored_in => populate_stored_in ) end |
#read_write_stores ⇒ Object
57 58 59 |
# File 'lib/remote_files/file.rb', line 57 def read_write_stores stores.reject(&:read_only?) end |
#retrieve! ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/remote_files/file.rb', line 79 def retrieve! stores.each do |store| begin file = store.retrieve!(identifier) next unless file @content = file.content @content_type = file.content_type # :populate_stored_in is a boolean @stored_in = file.stored_in if @populate_stored_in return true rescue Error => e end end raise NotFoundError end |
#store! ⇒ Object
96 97 98 |
# File 'lib/remote_files/file.rb', line 96 def store! configuration.store!(self) end |
#store_once! ⇒ Object
100 101 102 |
# File 'lib/remote_files/file.rb', line 100 def store_once! configuration.store_once!(self) end |
#stored? ⇒ Boolean
45 46 47 |
# File 'lib/remote_files/file.rb', line 45 def stored? !@stored_in.empty? end |
#stored_everywhere? ⇒ Boolean
49 50 51 |
# File 'lib/remote_files/file.rb', line 49 def stored_everywhere? missing_stores.empty? end |
#stores ⇒ Object
53 54 55 |
# File 'lib/remote_files/file.rb', line 53 def stores @stored_in.map { |store_id| configuration.lookup_store(store_id) } end |
#synchronize! ⇒ Object
104 105 106 |
# File 'lib/remote_files/file.rb', line 104 def synchronize! configuration.synchronize!(self) end |
#url(store_identifier = nil) ⇒ Object
65 66 67 68 69 |
# File 'lib/remote_files/file.rb', line 65 def url(store_identifier = nil) store = store_identifier ? configuration.lookup_store(store_identifier) : configuration.primary_store return nil unless store store.url(identifier) end |