Возможно ли загрузить файл на S3 с помощью CarrierWave без модели?
CarrierWave имеет потрясающую документацию, пока вам не понадобится делать это без модели!
У меня настроены параметры загрузки и настройки тумана, и все они отлично работают при использовании установленного загрузчика на модели, но теперь я хочу сделать это без модели.
У меня есть это:
uploader = CsvUploader.new
something = uploader.store!(File.read(file_path))
uploader.retrieve_from_store!(self.file_name)
Когда я звоню. Store! код запускается сразу, что странно, поскольку загрузка файла занимает несколько секунд?
Затем, после того как я позвоню .retrieve_from_store! объект загрузки имеет всю правильную информацию S3, такую как полные URL и прочее.
Тем не менее, позвонив:
uploader.file.exists?
возвращает ложь И просмотр URL-адресов s3 возвращает ключ не найден ошибка от s3.
Итак, что я делаю не так? Повторюсь, это работает, когда смонтирован, поэтому я нене думаю, что этомои настройки тумана.
Мой загрузчик:
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