Module: Refile
- Defined in:
- lib/refile.rb,
lib/refile/app.rb,
lib/refile/file.rb,
lib/refile/rails.rb,
lib/refile/version.rb,
lib/refile/attacher.rb,
lib/refile/signature.rb,
lib/refile/attachment.rb,
lib/refile/backend/s3.rb,
lib/refile/random_hasher.rb,
lib/refile/image_processing.rb,
lib/refile/backend/file_system.rb,
lib/refile/rails/attachment_helper.rb,
lib/refile/attachment/active_record.rb
Defined Under Namespace
Modules: ActiveRecord, Attachment, AttachmentFieldHelper, AttachmentHelper, Backend Classes: App, Attacher, Confirm, Engine, File, ImageProcessor, Invalid, RandomHasher, Signature
Constant Summary collapse
- ONE_YEAR_IN_SECONDS =
31_557_600
- VERSION =
"0.4.1"
Class Attribute Summary collapse
-
.allow_origin ⇒ String
Value for Access-Control-Allow-Origin header.
-
.app ⇒ Refile::App?
A shortcut to the instance of the Rack application.
-
.automount ⇒ Object
Should the rack application be automounted in a Rails app? The default is true.
-
.content_max_age ⇒ Object
Value for Cache-Control: max-age=<value in seconds> header.
-
.direct_upload ⇒ Array[String]
A list of names which identify backends in the global backend registry.
-
.host ⇒ String?
The host name that the Rack application can be reached at.
-
.logger ⇒ Logger
Logger that should be used by rack application.
-
.mount_point ⇒ Object
Where should the rack application be mounted? The default is ‘attachments’.
Class Method Summary collapse
-
.backends ⇒ Hash{String => Backend}
A global registry of backends.
-
.cache ⇒ Backend
A shortcut to retrieving the backend named “cache” from the global registry.
-
.cache=(backend) ⇒ Object
A shortcut to setting the backend named “cache” in the global registry.
-
.configure { ... } ⇒ Object
Yield the Refile module as a convenience for configuring multiple config options at once.
- .extract_content_type(uploadable) ⇒ Object
- .extract_filename(uploadable) ⇒ Object
-
.processor(name, processor = nil) {|Refile::File| ... } ⇒ Object
Adds a processor.
-
.processors ⇒ Hash{String => Proc}
A global registry of processors.
-
.store ⇒ Backend
A shortcut to retrieving the backend named “store” from the global registry.
-
.store=(backend) ⇒ Object
A shortcut to setting the backend named “store” in the global registry.
-
.verify_uploadable(uploadable, max_size) ⇒ true
Verify that the given uploadable is indeed a valid uploadable.
Class Attribute Details
.allow_origin ⇒ String
Value for Access-Control-Allow-Origin header
51 52 53 |
# File 'lib/refile.rb', line 51 def allow_origin @allow_origin end |
.app ⇒ Refile::App?
A shortcut to the instance of the Rack application. This should be set when the application is initialized. ‘refile/rails` sets this value.
24 25 26 |
# File 'lib/refile.rb', line 24 def app @app end |
.automount ⇒ Object
Should the rack application be automounted in a Rails app? The default is true. If set to false then Refile.app should be mounted in the Rails application routes.rb with the options ‘at: Refile.mount_point, as: :refile_app`
64 65 66 |
# File 'lib/refile.rb', line 64 def automount @automount end |
.content_max_age ⇒ Object
Value for Cache-Control: max-age=<value in seconds> header
54 55 56 |
# File 'lib/refile.rb', line 54 def content_max_age @content_max_age end |
.direct_upload ⇒ Array[String]
A list of names which identify backends in the global backend registry. The Rack application allows POST requests to only the backends specified in this config option. This defaults to ‘[“cache”]`, only allowing direct uploads to the cache backend.
41 42 43 |
# File 'lib/refile.rb', line 41 def direct_upload @direct_upload end |
.host ⇒ String?
The host name that the Rack application can be reached at. If not set, Refile will use an absolute URL without hostname. It is strongly recommended to run Refile behind a CDN and to set this to the hostname of the CDN distribution. A protocol relative URL is recommended for this value.
33 34 35 |
# File 'lib/refile.rb', line 33 def host @host end |
.logger ⇒ Logger
Logger that should be used by rack application
46 47 48 |
# File 'lib/refile.rb', line 46 def logger @logger end |
.mount_point ⇒ Object
Where should the rack application be mounted? The default is ‘attachments’
58 59 60 |
# File 'lib/refile.rb', line 58 def mount_point @mount_point end |
Class Method Details
.backends ⇒ Hash{String => Backend}
A global registry of backends.
69 70 71 |
# File 'lib/refile.rb', line 69 def backends @backends ||= {} end |
.cache ⇒ Backend
A shortcut to retrieving the backend named “cache” from the global registry.
133 134 135 |
# File 'lib/refile.rb', line 133 def cache backends["cache"] end |
.cache=(backend) ⇒ Object
A shortcut to setting the backend named “cache” in the global registry.
140 141 142 |
# File 'lib/refile.rb', line 140 def cache=(backend) backends["cache"] = backend end |
.configure { ... } ⇒ Object
Yield the Refile module as a convenience for configuring multiple config options at once.
148 149 150 |
# File 'lib/refile.rb', line 148 def configure yield self end |
.extract_content_type(uploadable) ⇒ Object
182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/refile.rb', line 182 def extract_content_type(uploadable) if uploadable.respond_to?(:content_type) uploadable.content_type else filename = extract_filename(uploadable) if filename content_type = MIME::Types.of(filename).first content_type.to_s if content_type end end end |
.extract_filename(uploadable) ⇒ Object
173 174 175 176 177 178 179 180 |
# File 'lib/refile.rb', line 173 def extract_filename(uploadable) path = if uploadable.respond_to?(:original_filename) uploadable.original_filename elsif uploadable.respond_to?(:path) uploadable.path end ::File.basename(path) if path end |
.processor(name, processor = nil) {|Refile::File| ... } ⇒ Object
Adds a processor. The processor must respond to ‘call`, both receiving and returning an IO-like object. Alternatively a block can be given to this method which also receives and returns an IO-like object.
An IO-like object is recommended to be an instance of the ‘IO` class or one of its subclasses, like `File` or a `StringIO`, or a `Refile::File`. It can also be any other object which responds to `size`, `read`, `eof`? and `close` and mimics the behaviour of IO objects for these methods.
109 110 111 112 |
# File 'lib/refile.rb', line 109 def processor(name, processor = nil, &block) processor ||= block processors[name.to_s] = processor end |
.processors ⇒ Hash{String => Proc}
A global registry of processors. These will be used by the Rack application to manipulate files prior to serving them up to the user, based on options sent trough the URL. This can be used for example to resize images or to convert files to another file format.
79 80 81 |
# File 'lib/refile.rb', line 79 def processors @processors ||= {} end |
.store ⇒ Backend
A shortcut to retrieving the backend named “store” from the global registry.
118 119 120 |
# File 'lib/refile.rb', line 118 def store backends["store"] end |
.store=(backend) ⇒ Object
A shortcut to setting the backend named “store” in the global registry.
125 126 127 |
# File 'lib/refile.rb', line 125 def store=(backend) backends["store"] = backend end |
.verify_uploadable(uploadable, max_size) ⇒ true
Verify that the given uploadable is indeed a valid uploadable. This method is used by backends as a sanity check, you should not have to use this method unless you are writing a backend.
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/refile.rb', line 161 def verify_uploadable(uploadable, max_size) [:size, :read, :eof?, :close].each do |m| unless uploadable.respond_to?(m) raise ArgumentError, "does not respond to `#{m}`." end end if max_size and uploadable.size > max_size raise Refile::Invalid, "#{uploadable.inspect} is too large" end true end |