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"