Module: Shrine::Plugins

Defined in:
lib/shrine/plugins.rb,
lib/shrine/plugins/model.rb,
lib/shrine/plugins/column.rb,
lib/shrine/plugins/entity.rb,
lib/shrine/plugins/sequel.rb,
lib/shrine/plugins/recache.rb,
lib/shrine/plugins/data_uri.rb,
lib/shrine/plugins/included.rb,
lib/shrine/plugins/tempfile.rb,
lib/shrine/plugins/versions.rb,
lib/shrine/plugins/mirroring.rb,
lib/shrine/plugins/rack_file.rb,
lib/shrine/plugins/signature.rb,
lib/shrine/plugins/delete_raw.rb,
lib/shrine/plugins/keep_files.rb,
lib/shrine/plugins/processing.rb,
lib/shrine/plugins/remote_url.rb,
lib/shrine/plugins/validation.rb,
lib/shrine/plugins/default_url.rb,
lib/shrine/plugins/derivatives.rb,
lib/shrine/plugins/form_assign.rb,
lib/shrine/plugins/multi_cache.rb,
lib/shrine/plugins/url_options.rb,
lib/shrine/plugins/_persistence.rb,
lib/shrine/plugins/activerecord.rb,
lib/shrine/plugins/add_metadata.rb,
lib/shrine/plugins/backgrounding.rb,
lib/shrine/plugins/rack_response.rb,
lib/shrine/plugins/atomic_helpers.rb,
lib/shrine/plugins/module_include.rb,
lib/shrine/plugins/remove_invalid.rb,
lib/shrine/plugins/upload_options.rb,
lib/shrine/plugins/default_storage.rb,
lib/shrine/plugins/dynamic_storage.rb,
lib/shrine/plugins/infer_extension.rb,
lib/shrine/plugins/instrumentation.rb,
lib/shrine/plugins/pretty_location.rb,
lib/shrine/plugins/type_predicates.rb,
lib/shrine/plugins/upload_endpoint.rb,
lib/shrine/plugins/presign_endpoint.rb,
lib/shrine/plugins/refresh_metadata.rb,
lib/shrine/plugins/store_dimensions.rb,
lib/shrine/plugins/download_endpoint.rb,
lib/shrine/plugins/remove_attachment.rb,
lib/shrine/plugins/validation_helpers.rb,
lib/shrine/plugins/derivation_endpoint.rb,
lib/shrine/plugins/determine_mime_type.rb,
lib/shrine/plugins/metadata_attributes.rb,
lib/shrine/plugins/restore_cached_data.rb,
lib/shrine/plugins/_urlsafe_serialization.rb,
lib/shrine/plugins/cached_attachment_data.rb

Overview

Module in which all Shrine plugins should be stored. Also contains logic for registering and loading plugins.

Defined Under Namespace

Modules: Activerecord, AddMetadata, Backgrounding, CachedAttachmentData, Column, DataUri, DefaultStorage, DefaultUrl, DeleteRaw, DerivationEndpoint, Derivatives, DetermineMimeType, DownloadEndpoint, DynamicStorage, Entity, FormAssign, Included, InferExtension, Instrumentation, KeepFiles, MetadataAttributes, Mirroring, Model, ModuleInclude, MultiCache, Persistence, PresignEndpoint, PrettyLocation, Processing, RackFile, RackResponse, Recache, RefreshMetadata, RemoteUrl, RemoveAttachment, RemoveInvalid, RestoreCachedData, Sequel, Signature, StoreDimensions, Tempfile, TypePredicates, UploadEndpoint, UploadOptions, UrlOptions, UrlsafeSerialization, Validation, ValidationHelpers, Versions Classes: AtomicHelpers

Class Method Summary collapse

Class Method Details

.configure(plugin, uploader, *args, **kwargs, &block) ⇒ Object

Delegate call to the plugin in a way that works across Ruby versions.



33
34
35
36
37
38
39
40
41
# File 'lib/shrine/plugins.rb', line 33

def self.configure(plugin, uploader, *args, **kwargs, &block)
  return unless plugin.respond_to?(:configure)

  if kwargs.any?
    plugin.configure(uploader, *args, **kwargs, &block)
  else
    plugin.configure(uploader, *args, &block)
  end
end

.load_dependencies(plugin, uploader, *args, **kwargs, &block) ⇒ Object

Delegate call to the plugin in a way that works across Ruby versions.



22
23
24
25
26
27
28
29
30
# File 'lib/shrine/plugins.rb', line 22

def self.load_dependencies(plugin, uploader, *args, **kwargs, &block)
  return unless plugin.respond_to?(:load_dependencies)

  if kwargs.any?
    plugin.load_dependencies(uploader, *args, **kwargs, &block)
  else
    plugin.load_dependencies(uploader, *args, &block)
  end
end

.load_plugin(name) ⇒ Object

If the registered plugin already exists, use it. Otherwise, require it and return it. This raises a LoadError if such a plugin doesn’t exist, or a Shrine::Error if it exists but it does not register itself correctly.



13
14
15
16
17
18
19
# File 'lib/shrine/plugins.rb', line 13

def self.load_plugin(name)
  unless plugin = @plugins[name]
    require "shrine/plugins/#{name}"
    raise Error, "plugin #{name} did not register itself correctly in Shrine::Plugins" unless plugin = @plugins[name]
  end
  plugin
end

.register_plugin(name, mod) ⇒ Object

Register the given plugin with Shrine, so that it can be loaded using ‘Shrine.plugin` with a symbol. Should be used by plugin files. Example:

Shrine::Plugins.register_plugin(:plugin_name, PluginModule)


47
48
49
# File 'lib/shrine/plugins.rb', line 47

def self.register_plugin(name, mod)
  @plugins[name] = mod
end