Datei mit CarrierWave ohne Modell auf S3 hochladen, ist das möglich?

CarrierWave bietet eine erstaunliche Dokumentation, bis Sie auf ein Modell verzichten müssen!

Ich habe meine Uploader- und Nebeleinstellungen eingerichtet und sie funktionieren alle einwandfrei, wenn der gemountete Uploader auf einem Modell verwendet wird, aber jetzt möchte ich es ohne Modell tun.

Ich habe das:

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

Wenn ich anrufe .store! Der Code wird sofort ausgeführt, was seltsam ist, da das Hochladen der Datei einige Sekunden dauern sollte.

Dann, nachdem ich .retrieve_from_store angerufen habe! Das Uploader-Objekt hat alle korrekten S3-Informationen, wie die vollständigen URLs und so weiter.

Rufen Sie jedoch an:

uploader.file.exists?

gibt false zurück. Und das Durchsuchen der s3-URLs gibt einen nicht gefundenen Fehler von s3 zurück.

Also, was mache ich falsch? Um es noch einmal zu wiederholen, es funktioniert, wenn es montiert ist, also denke ich nicht, dass es meine Nebeleinstellungen sind.

Mein Uploader:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage