Загружайте файлы с помощью Shrine через Listen gem

У меня проблема, я использую Listen gem для отслеживания добавленных новых файлов, после добавления нового файла я хочу скопировать его в другое хранилище с Shrine, но Listen gem вернет мне в "добавленную" переменную путь к добавленному файл, но Shrine нужен объект для правильной работы, как я могу получить объект, если у меня есть путь к этому файлу? Кто-нибудь может мне помочь?


load './config/initializers/shrine.rb'

module FileTracker

  file_dir = "./public/uploads/cache"

  listener = Listen.to(file_dir) do |modified, added, removed|
    puts "modified absolute path: #{modified}"
    puts "added absolute path: #{added}"
    puts "removed absolute path: #{removed}"
  FileUtils.cp_r added, './public/uploads/store' # this code is copy files, but i need do it with Shrine
  #added.each { |file| p Shrine.new(:store).path(file) } #this code is return error
  end

   listener.start 
   sleep
end

person Valentin Mohis    schedule 13.12.2017    source источник


Ответы (1)


Вы можете вызвать File.open с путем в качестве аргумента для создания объекта ввода-вывода из пути.

added.each { |path| Shrine.new(:store).upload(File.open(path)) }
person janko-m    schedule 15.12.2017