Module: Paperclip
- Defined in:
- lib/dm-paperclip.rb,
lib/dm-paperclip/style.rb,
lib/dm-paperclip/upfile.rb,
lib/dm-paperclip/version.rb,
lib/dm-paperclip/geometry.rb,
lib/dm-paperclip/callbacks.rb,
lib/dm-paperclip/ext/blank.rb,
lib/dm-paperclip/ext/class.rb,
lib/dm-paperclip/processor.rb,
lib/dm-paperclip/thumbnail.rb,
lib/dm-paperclip/attachment.rb,
lib/dm-paperclip/storage/s3.rb,
lib/dm-paperclip/ext/try_dup.rb,
lib/dm-paperclip/validations.rb,
lib/dm-paperclip/command_line.rb,
lib/dm-paperclip/interpolations.rb,
lib/dm-paperclip/storage/filesystem.rb,
lib/dm-paperclip/storage/s3/aws_library.rb,
lib/dm-paperclip/storage/s3/aws_s3_library.rb
Overview
The base module that gets included in ActiveRecord::Base. See the documentation for Paperclip::ClassMethods for more useful information.
Defined Under Namespace
Modules: Callbacks, ClassMethods, Ext, InstanceMethods, Interpolations, Resource, Storage, Upfile, Validate Classes: Attachment, CommandLine, CommandNotFoundError, Configuration, Geometry, InfiniteInterpolationError, NotIdentifiedByImageMagickError, PaperclipCommandLineError, PaperclipError, Processor, StorageMethodNotFound, Style, Tempfile, Thumbnail
Constant Summary collapse
- VERSION =
"2.5.0"
- PAPERCLIP_VERSION =
"2.3.8"
Class Method Summary collapse
- .config ⇒ Object
- .config=(config) ⇒ Object
-
.configure {|@config = Configuration.new| ... } ⇒ Object
To configure Paperclip, put this code in an initializer, Rake task, or wherever:.
- .each_instance_with_attachment(klass, name) ⇒ Object
-
.included(base) ⇒ Object
:nodoc:.
- .interpolates(key, &block) ⇒ Object
-
.log(message) ⇒ Object
Log a paperclip-specific line.
-
.logger ⇒ Object
:nodoc:.
-
.logging? ⇒ Boolean
:nodoc:.
-
.options ⇒ Object
Provides configurability to Paperclip.
-
.path_for_command(command) ⇒ Object
:nodoc:.
-
.processor(name) ⇒ Object
:nodoc:.
- .require_processors ⇒ Object
-
.run(cmd, *params) ⇒ Object
The run method takes a command to execute and an array of parameters that get passed to it.
Class Method Details
.config ⇒ Object
74 75 76 |
# File 'lib/dm-paperclip.rb', line 74 def self.config @config ||= Configuration.new end |
.config=(config) ⇒ Object
70 71 72 |
# File 'lib/dm-paperclip.rb', line 70 def self.config=(config) @config = config end |
.configure {|@config = Configuration.new| ... } ⇒ Object
To configure Paperclip, put this code in an initializer, Rake task, or wherever:
Paperclip.configure do |config|
config.root = Rails.root # the application root to anchor relative urls (defaults to Dir.pwd)
config.env = Rails.env # server env support, defaults to ENV['RACK_ENV'] or 'development'
config.use_dm_validations = true # validate attachment sizes and such, defaults to false
config.processors_path = 'lib/pc' # relative path to look for processors, defaults to 'lib/paperclip_processors'
end
65 66 67 68 |
# File 'lib/dm-paperclip.rb', line 65 def self.configure yield @config = Configuration.new Paperclip.config = @config end |
.each_instance_with_attachment(klass, name) ⇒ Object
185 186 187 188 189 |
# File 'lib/dm-paperclip.rb', line 185 def (klass, name) Object.const_get(klass).all.each do |instance| yield(instance) if instance.send(:"#{name}?") end end |
.included(base) ⇒ Object
:nodoc:
169 170 171 172 173 174 |
# File 'lib/dm-paperclip.rb', line 169 def included base #:nodoc: base.extend ClassMethods unless base.respond_to?(:define_callbacks) base.send(:include, Paperclip::CallbackCompatability) end end |
.interpolates(key, &block) ⇒ Object
141 142 143 |
# File 'lib/dm-paperclip.rb', line 141 def interpolates key, &block Paperclip::Interpolations[key] = block end |
.log(message) ⇒ Object
Log a paperclip-specific line. Uses ActiveRecord::Base.logger by default. Set Paperclip.options to false to turn off.
193 194 195 |
# File 'lib/dm-paperclip.rb', line 193 def log logger.info("[paperclip] #{}") if logging? end |
.logger ⇒ Object
:nodoc:
197 198 199 |
# File 'lib/dm-paperclip.rb', line 197 def logger #:nodoc: DataMapper.logger end |
.logging? ⇒ Boolean
:nodoc:
201 202 203 |
# File 'lib/dm-paperclip.rb', line 201 def logging? #:nodoc: [:log] end |
.options ⇒ Object
Provides configurability to Paperclip. There are a number of options available, such as:
-
whiny: Will raise an error if Paperclip cannot process thumbnails of an uploaded image. Defaults to true.
-
log: Logs progress to the Rails log. Uses ActiveRecord’s logger, so honors log levels, etc. Defaults to true.
-
command_path: Defines the path at which to find the command line programs if they are not visible to Rails the system’s search path. Defaults to nil, which uses the first executable found in the user’s search path.
-
image_magick_path: Deprecated alias of command_path.
122 123 124 125 126 127 128 129 130 131 |
# File 'lib/dm-paperclip.rb', line 122 def @options ||= { :whiny => true, :image_magick_path => nil, :command_path => nil, :log => true, :log_command => true, :swallow_stderr => true } end |
.path_for_command(command) ⇒ Object
:nodoc:
133 134 135 136 137 138 139 |
# File 'lib/dm-paperclip.rb', line 133 def path_for_command command #:nodoc: if [:image_magick_path] warn("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead") end path = [[:command_path] || [:image_magick_path], command].compact File.join(*path) end |
.processor(name) ⇒ Object
:nodoc:
176 177 178 179 180 181 182 183 |
# File 'lib/dm-paperclip.rb', line 176 def processor name #:nodoc: name = DataMapper::Inflector.classify(name.to_s) processor = Paperclip.const_get(name) unless processor.ancestors.include?(Paperclip::Processor) raise PaperclipError.new("[paperclip] Processor #{name} was not found") end processor end |
.require_processors ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/dm-paperclip.rb', line 78 def self.require_processors return if @processors_already_required Dir.glob(File.("#{Paperclip.config.processors_path}/*.rb")).sort.each do |processor| require processor end @processors_already_required = true end |
.run(cmd, *params) ⇒ Object
The run method takes a command to execute and an array of parameters that get passed to it. The command is prefixed with the :command_path option from Paperclip.options. If you have many commands to run and they are in different paths, the suggested course of action is to symlink them so they are all in the same directory.
If the command returns with a result code that is not one of the expected_outcodes, a PaperclipCommandLineError will be raised. Generally a code of 0 is expected, but a list of codes may be passed if necessary. These codes should be passed as a hash as the last argument, like so:
Paperclip.run("echo", "something", :expected_outcodes => [0,1,2,3])
This method can log the command being run when Paperclip.options is set to true (defaults to false). This will only log if logging in general is set to true as well.
161 162 163 164 165 166 167 |
# File 'lib/dm-paperclip.rb', line 161 def run cmd, *params if [:image_magick_path] Paperclip.log("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead") end CommandLine.path = [:command_path] || [:image_magick_path] CommandLine.new(cmd, *params).run end |