Module: Paperclip
- Defined in:
- lib/paperclip.rb,
lib/paperclip/upfile.rb,
lib/paperclip/storage.rb,
lib/paperclip/geometry.rb,
lib/paperclip/processor.rb,
lib/paperclip/thumbnail.rb,
lib/paperclip/attachment.rb,
lib/paperclip/interpolations.rb,
lib/paperclip/callback_compatability.rb,
lib/paperclip/matchers/have_attached_file_matcher.rb,
lib/paperclip/matchers/validate_attachment_size_matcher.rb,
lib/paperclip/matchers/validate_attachment_presence_matcher.rb,
lib/paperclip/matchers/validate_attachment_content_type_matcher.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: CallbackCompatability, ClassMethods, InstanceMethods, Interpolations, Shoulda, Storage, Upfile Classes: Attachment, Geometry, InfiniteInterpolationError, NotIdentifiedByImageMagickError, PaperclipCommandLineError, PaperclipError, Processor, Tempfile, Thumbnail
Constant Summary collapse
- VERSION =
"2.3.1.1"
Class Method Summary collapse
-
.bit_bucket ⇒ Object
:nodoc:.
-
.included(base) ⇒ Object
:nodoc:.
- .interpolates(key, &block) ⇒ Object
-
.log(message) ⇒ Object
Log a paperclip-specific line.
- .logger ⇒ Object
-
.logging? ⇒ Boolean
:nodoc:.
-
.options ⇒ Object
Provides configurability to Paperclip.
-
.path_for_command(command) ⇒ Object
:nodoc:.
-
.processor(name) ⇒ Object
:nodoc:.
-
.run(cmd, params = "", expected_outcodes = 0) ⇒ Object
The run method takes a command to execute and a string of parameters that get passed to it.
Class Method Details
.bit_bucket ⇒ Object
:nodoc:
109 110 111 |
# File 'lib/paperclip.rb', line 109 def bit_bucket #:nodoc: File.exists?("/dev/null") ? "/dev/null" : "NUL" end |
.included(base) ⇒ Object
:nodoc:
113 114 115 116 117 118 |
# File 'lib/paperclip.rb', line 113 def included base #:nodoc: base.extend ClassMethods unless base.respond_to?(:define_callbacks) base.send(:include, Paperclip::CallbackCompatability) end end |
.interpolates(key, &block) ⇒ Object
81 82 83 |
# File 'lib/paperclip.rb', line 81 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.
131 132 133 |
# File 'lib/paperclip.rb', line 131 def log logger.info("[paperclip] #{}") if logging? end |
.logger ⇒ Object
135 136 137 |
# File 'lib/paperclip.rb', line 135 def logger [:logger] end |
.logging? ⇒ Boolean
:nodoc:
139 140 141 |
# File 'lib/paperclip.rb', line 139 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.
-
logger: which logger to use. Defaults to ActiveRecord’s logger.
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/paperclip.rb', line 61 def @options ||= { :whiny => true, :image_magick_path => nil, :command_path => nil, :log => true, :log_command => false, :swallow_stderr => true, :logger => ActiveRecord::Base.logger } end |
.path_for_command(command) ⇒ Object
:nodoc:
73 74 75 76 77 78 79 |
# File 'lib/paperclip.rb', line 73 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:
120 121 122 123 124 125 126 127 |
# File 'lib/paperclip.rb', line 120 def processor name #:nodoc: name = name.to_s.camelize processor = Paperclip.const_get(name) unless processor.ancestors.include?(Paperclip::Processor) raise PaperclipError.new("Processor #{name} was not found") end processor end |
.run(cmd, params = "", expected_outcodes = 0) ⇒ Object
The run method takes a command to execute and a string 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.
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.
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/paperclip.rb', line 98 def run cmd, params = "", expected_outcodes = 0 command = %Q[#{path_for_command(cmd)} #{params}].gsub(/\s+/, " ") command = "#{command} 2>#{bit_bucket}" if Paperclip.[:swallow_stderr] Paperclip.log(command) if Paperclip.[:log_command] output = `#{command}` unless [expected_outcodes].flatten.include?($?.exitstatus) raise PaperclipCommandLineError, "Error while running #{cmd}" end output end |