Prześlij plik do S3 za pomocą CarrierWave bez modelu, czy to możliwe?

CarrierWave ma niesamowitą dokumentację, dopóki nie musisz tego robić bez modelu!

Skonfigurowałem ustawienia przesyłania i mgły, a wszystkie działają poprawnie, gdy używasz zainstalowanego programu do przesyłania plików na modelu, ale teraz chcę to zrobić bez modelu.

Mam to:

 uploader = CsvUploader.new
 something = uploader.store!(File.read(file_path))
 uploader.retrieve_from_store!(self.file_name)

Kiedy dzwonię do sklepu! kod działa natychmiast, co jest dziwne, ponieważ przesłanie pliku powinno zająć kilka sekund?

Następnie po wywołaniu .retrieve_from_store! obiekt uploader ma wszystkie poprawne informacje S3, takie jak pełne adresy URL i inne.

Jednak dzwoniąc:

uploader.file.exists?

zwraca false. A przeglądanie adresów URL s3 zwraca błąd nie znaleziony przez s3.

Więc co robię źle? Powtarzam, działa po zamontowaniu, więc nie sądzę, że to moje ustawienia mgły.

Mój przesyłający:

class CsvUploader < 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

questionAnswers(1)

yourAnswerToTheQuestion