title: Upload file to S3 using CarrierWave without a model, is it possible?
body: <p>CarrierWave has amazing documentation, until you need to do it without a model!</p>
  
  <p>I have my uploader and fog settings set up, and they all work fine when using the mounted uploader on a model, but now I want to do it without a model.</p>
  
  <p>I have this:</p>
  
  <pre><code> uploader = CsvUploader.new
   something = uploader.store!(File.read(file_path))
   uploader.retrieve_from_store!(self.file_name)
  </code></pre>
  
  <p>When I call .store! the code runs immediately which is weird since it should take a few seconds to upload the file?</p>
  
  <p>Then after I call .retrieve_from_store! the uploader object has all the correct S3 info, like the full urls and stuff.</p>
  
  <p>However, calling:</p>
  
  <pre><code>uploader.file.exists?
  </code></pre>
  
  <p>returns false. And browsing the s3 urls return a key not found error from s3.</p>
  
  <p>So, what am I doing wrong?? To reiterate, it works when mounted so I don't think it's my fog settings.</p>
  
  <p>My uploader:</p>
  
  <pre><code>class CsvUploader &lt; CarrierWave::Uploader::Base
    # Choose what kind of storage to use for this uploader:
    storage :fog
  
    # Override the directory where uploaded files will be stored.
    # This is a sensible default for uploaders that are meant to be mounted:
    include CarrierWave::MimeTypes
    process :set_content_type
  
    def store_dir
      "uploads/public/extranet_csvs"
    end
  
    def cache_dir
      "/tmp/uploads"
    end
  
    # Add a white list of extensions which are allowed to be uploaded.
    # For images you might use something like this:
    def extension_white_list
      %w(csv)
    end
  end
  </code></pre>