class Paperclip::UrlGenerator
Attributes
attachment[R]
Public Class Methods
new(attachment)
click to toggle source
# File lib/paperclip/url_generator.rb, line 6 def initialize(attachment) @attachment = attachment end
Public Instance Methods
for(style_name, options)
click to toggle source
# File lib/paperclip/url_generator.rb, line 10 def for(style_name, options) interpolated = attachment_options[:interpolator].interpolate( most_appropriate_url, @attachment, style_name ) escaped = escape_url_as_needed(interpolated, options) timestamp_as_needed(escaped, options) end
Private Instance Methods
default_url()
click to toggle source
This method is all over the place.
# File lib/paperclip/url_generator.rb, line 25 def default_url if attachment_options[:default_url].respond_to?(:call) attachment_options[:default_url].call(@attachment) elsif attachment_options[:default_url].is_a?(Symbol) @attachment.instance.send(attachment_options[:default_url]) else attachment_options[:default_url] end end
escape_regex()
click to toggle source
# File lib/paperclip/url_generator.rb, line 72 def escape_regex /[\?\(\)\[\]\+]/ end
escape_url(url)
click to toggle source
# File lib/paperclip/url_generator.rb, line 64 def escape_url(url) if url.respond_to?(:escape) url.escape else URI.escape(url).gsub(escape_regex){|m| "%#{m.ord.to_s(16).upcase}" } end end
escape_url_as_needed(url, options)
click to toggle source
# File lib/paperclip/url_generator.rb, line 56 def escape_url_as_needed(url, options) if options[:escape] escape_url(url) else url end end
most_appropriate_url()
click to toggle source
# File lib/paperclip/url_generator.rb, line 35 def most_appropriate_url if @attachment.original_filename.nil? default_url else attachment_options[:url] end end
timestamp_as_needed(url, options)
click to toggle source
# File lib/paperclip/url_generator.rb, line 43 def timestamp_as_needed(url, options) if options[:timestamp] && timestamp_possible? delimiter_char = url.match(/\?.+=/) ? '&' : '?' "#{url}#{delimiter_char}#{@attachment.updated_at.to_s}" else url end end
timestamp_possible?()
click to toggle source
# File lib/paperclip/url_generator.rb, line 52 def timestamp_possible? @attachment.respond_to?(:updated_at) && @attachment.updated_at.present? end