lib/cloudinary/carrier_wave/storage.rb in cloudinary-1.0.85 vs lib/cloudinary/carrier_wave/storage.rb in cloudinary-1.1.0

- old
+ new

@@ -9,26 +9,26 @@ raise CloudinaryException, "Uploader configured for type #{storage_type} but resource of type #{file.type} given." if storage_type.to_s != file.type if uploader.public_id && uploader.auto_rename_preloaded? @stored_version = file.version uploader.rename(nil, true) else - store_cloudinary_identifier(file.version, file.filename) + store_cloudinary_identifier(file.version, file.filename, file.resource_type, file.type) end - return + return # Nothing to do when Cloudinary::CarrierWave::CloudinaryFile, Cloudinary::CarrierWave::StoredFile - return nil # Nothing to do + return # Nothing to do when Cloudinary::CarrierWave::RemoteFile data = file.uri.to_s else data = file.file data.rewind if !file.is_path? && data.respond_to?(:rewind) end # This is the toplevel, need to upload the actual file. params = uploader.transformation.dup params[:return_error] = true - params[:format] = uploader.format + params[:format] = uploader.requested_format params[:public_id] = uploader.my_public_id uploader.versions.values.each(&:tags) # Validate no tags in versions params[:tags] = uploader.tags if uploader.tags eager_versions = uploader.versions.values.select(&:eager) params[:eager] = eager_versions.map{|version| [version.transformation, version.format]} if eager_versions.length > 0 @@ -40,37 +40,31 @@ raise Cloudinary::CarrierWave::UploadError.new(uploader.metadata["error"]["message"], uploader.metadata["error"]["http_code"]) end if uploader.metadata["version"] filename = [uploader.metadata["public_id"], uploader.metadata["format"]].reject(&:blank?).join(".") - store_cloudinary_identifier(uploader.metadata["version"], filename) + store_cloudinary_identifier(uploader.metadata["version"], filename, uploader.metadata["resource_type"], uploader.metadata["type"]) end # Will throw an exception on error else raise CloudinaryException, "nested versions are not allowed." if (uploader.class.version_names.length > 1) # Do nothing - versions are not handled locally. end nil end - # @deprecated For backward compatibility - def store_cloudinary_version(version) - if identifier.match(%r(^(v[0-9]+)/(.*))) - filename = $2 - else - filename = identifier - end - - store_cloudinary_identifier(version, filename) - end - # Updates the model mounter identifier with version information. # # Carrierwave uses hooks when integrating with ORMs so it's important to # update the identifier in a way that does not trigger hooks again or else # you'll get stuck in a loop. - def store_cloudinary_identifier(version, filename) + def store_cloudinary_identifier(version, filename, resource_type=nil, type=nil) name = "v#{version}/#{filename}" + if uploader.use_extended_identifier? + resource_type ||= uploader.resource_type || "image" + type ||= uploader.storage_type || "upload" + name = "#{resource_type}/#{type}/#{name}" + end model_class = uploader.model.class column = uploader.model.send(:_mounter, uploader.mounted_as).send(:serialization_column) if defined?(ActiveRecord::Base) && uploader.model.is_a?(ActiveRecord::Base) primary_key = model_class.primary_key.to_sym if Rails.version >= "3.0"