- Class-level processdefinitions are only applied to the original file
- Versions are generated based on the processed original file
- Callbacks (before/after) are applied to original file and each version by itself
- Under the hood, a version is an instance of the uploader class that has no versions
- Version uploader and original uploader can be distinguished by checking #version_name: version uploaders return the version name, whereas the original uploader instance returnsnil
- Version instances do not have a reference to their parent uploader
class DemoUploader < CarrierWave::Uploader::Base
  process :resize # 1
  before :cache, :do_something # 3
  version :thumb do # 2
    process :crop
  end
  private
  def do_something(file)
    case version_name # 5
    # ...
  end
end
Posted by Dominik Schöler to makandra dev (2019-02-21 15:26)