2010-09-27 9 views
6

Chcę uruchomić Paperclip na wszystkich plikach w katalogu na serwerze. Zasadniczo chciałbym umożliwić użytkownikom FTP przesyłanie niektórych plików na mój serwer WWW, a następnie mogę ręcznie uruchomić zadanie rake, aby Paperclip przetwarzał wszystkie pliki (zmiana rozmiaru obrazów, aktualizacja bazy danych itp.).Jak mogę utworzyć pliki procesu spinacza z katalogu serwera?

Jak mogę to zrobić?

+0

ja też to potrzebne do konwersji ze starego systemu, w którym pliki są statyczne na dysku do środowiska Rails. Zasadniczo wystarczy otworzyć plik i przypisać go do atrybutu docelowego "has_attached_file" atrybut i zapisać. – Chloe

Odpowiedz

9

Nie jestem pewien, czy zrozumiałem Twoje pytanie - czy chcesz zdalnie uruchamiać zadanie rake lub importować obrazy?

W późniejszym przypadku istnieje odpowiedź.

Najpierw trzeba jakiś model, aby zachować obrazy, a może jakieś inne dane, coś takiego:

class Picture < ActiveRecord::Base 
    has_attached_file :image, :styles => { 
     :thumb => "100x100>", 
     :big => "500x500>" 
     } 
end 

Można tworzyć proste zadania Rake w folderze lib/zadań (należy nazwać plik. rozszerzenie grabie)

namespace :import do 

    desc "import all images from SOURCE_DIR folder" 
    task :images => :environment do 
    # get all images from given folder 
    Dir.glob(File.join(ENV["SOURCE_DIR"], "*")) do |file_path| 
     # create new model for every picture found and save it to db 
     open(file_path) do |f| 
     pict = Picture.new(:name => File.basename(file_path), 
          :image => f) 
     # a side affect of saving is that paperclip transformation will 
     # happen 
     pict.save! 
     end 


     # Move processed image somewhere else or just remove it. It is 
     # necessary as there is a risk of "double import" 
     #FileUtils.mv(file_path, "....") 
     #FileUtils.rm(file_path) 
    end 
    end 

end 

Następnie można wywołać ręcznie grabie zadania z poziomu konsoli dostarczanie parametr SOURCE_DIR który będzie folder na serwerze (może to być prawdziwy folder lub montowany zdalnie)

rake import:images SOURCE_DIR=~/my_images/to/be/imported 

Jeśli planujesz uruchomić to automatycznie, polecam wybrać się do klejnotu Resque Scheduler.

Aktualizacja: Aby zachować rzeczy proste, ja celowo pominięte wyjątek obsługi

+0

To jest niesamowite, myślę, że to jest dokładnie to, czego potrzebuję. Wypróbuję to później dzisiaj. – NotDan

+0

Cieszę się, że to słyszę! –

+0

Super łatwe, dzięki! – NotDan

Powiązane problemy