Class: Fclay::RemoteStorage::Provider
- Inherits:
-
Object
- Object
- Fclay::RemoteStorage::Provider
- Defined in:
- lib/fclay/remote_storage/provider.rb
Class Method Summary collapse
- .delete_files(model) ⇒ Object
- .get_provider_class(storage) ⇒ Object
- .provider_for(storage_name, uploading_object) ⇒ Object
- .remote_file_url(obj, style = nil) ⇒ Object
- .storage_policy ⇒ Object
- .storages_list ⇒ Object
- .upload(uploading_object) ⇒ Object
Class Method Details
.delete_files(model) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fclay/remote_storage/provider.rb', line 42 def self.delete_files(model) = model.class. if [:primary].present? storage = provider_for([:primary], model) storage.delete_files if [:secondary].present? storage = provider_for([:secondary], model) storage.delete_files end else storage = provider_for(storage_policy, model) storage.delete_files end end |
.get_provider_class(storage) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/fclay/remote_storage/provider.rb', line 6 def self.get_provider_class(storage) case storage[:kind] when 'ssh' Fclay::RemoteStorage::SSH when 's3' Fclay::RemoteStorage::S3 else raise 'Unsupported storage type' end end |
.provider_for(storage_name, uploading_object) ⇒ Object
17 18 19 20 |
# File 'lib/fclay/remote_storage/provider.rb', line 17 def self.provider_for(storage_name, uploading_object) klass = get_provider_class(storages_list[storage_name]) klass.new(storage_name, uploading_object) end |
.remote_file_url(obj, style = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/fclay/remote_storage/provider.rb', line 59 def self.remote_file_url(obj, style = nil) if obj.class.[:primary].present? s = obj.class.[:primary] klass = get_provider_class(storages_list[s]) "#{klass.url(s)}/#{obj.remote_file_path(style)}" else klass = get_provider_class(storages_list[storage_policy]) "#{klass.url(storage_policy)}/#{obj.remote_file_path(style)}" end end |
.storage_policy ⇒ Object
74 75 76 |
# File 'lib/fclay/remote_storage/provider.rb', line 74 def self.storage_policy Fclay.configuration.storage_policy end |
.storages_list ⇒ Object
70 71 72 |
# File 'lib/fclay/remote_storage/provider.rb', line 70 def self.storages_list Fclay.configuration.remote_storages end |
.upload(uploading_object) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fclay/remote_storage/provider.rb', line 23 def self.upload(uploading_object) = uploading_object.class. if [:primary].present? storage = provider_for([:primary], uploading_object) storage.upload if [:secondary].present? storage = provider_for([:secondary], uploading_object) storage.upload(without_update: true) end else storage = provider_for(storage_policy, uploading_object) storage.upload end uploading_object.delete_local_files end |