class CopyCarrierwaveFile::CopyFileService
Constants
- NoFileForOriginalResource
- UnknowStorage
Attributes
mount_point[R]
original_resource[R]
resource[R]
Public Class Methods
new(original_resource, resource, mount_point)
click to toggle source
# File lib/copy_carrierwave_file/copy_file_service.rb, line 8 def initialize(original_resource, resource, mount_point) @mount_point = mount_point.to_sym raise "#{original_resource} is not a resource with uploader" unless original_resource.class.respond_to? :uploaders raise "#{original_resource} doesn't have mount point #{mount_point}" unless original_resource.class.uploaders[@mount_point] raise "#{resource} is not a resource with uploader" unless resource.class.respond_to? :uploaders raise "#{resource} doesn't have mount point #{mount_point}" unless resource.class.uploaders[@mount_point] @original_resource = original_resource @resource = resource end
Public Instance Methods
have_file?()
click to toggle source
# File lib/copy_carrierwave_file/copy_file_service.rb, line 44 def have_file? original_resource_mounter.file.present? || original_resource_mounter.url end
original_resource_mounter()
click to toggle source
# File lib/copy_carrierwave_file/copy_file_service.rb, line 56 def original_resource_mounter original_resource.send(mount_point) end
set_file()
click to toggle source
sets file for given storage type
reason why case is comparing String and not actual storage class is that user may or may not add gem “fog” => this class may not be loaded
# File lib/copy_carrierwave_file/copy_file_service.rb, line 29 def set_file if have_file? case original_resource_mounter.send(:storage).class.name when 'CarrierWave::Storage::File' set_file_for_local_storage when 'CarrierWave::Storage::Fog', 'CarrierWave::Storage::AWS' set_file_for_remote_storage else raise UnknowStorage end else raise NoFileForOriginalResource end end
set_file_for_local_storage()
click to toggle source
# File lib/copy_carrierwave_file/copy_file_service.rb, line 52 def set_file_for_local_storage resource.send(:"#{mount_point.to_s}=", File.open(original_resource_mounter.file.file)) end
set_file_for_remote_storage()
click to toggle source
# File lib/copy_carrierwave_file/copy_file_service.rb, line 48 def set_file_for_remote_storage resource.send(:"remote_#{mount_point.to_s}_url=", original_resource_mounter.url) end