Non sono sicuro di aver capito la tua domanda - stai chiedendo di eseguire il compito di rake da remoto o come importare le immagini?
Nel caso successivo c'è una risposta.
In primo luogo avete bisogno di qualche modello per mantenere le immagini e forse alcuni altri dati, qualcosa di simile:
class Picture < ActiveRecord::Base
has_attached_file :image, :styles => {
:thumb => "100x100>",
:big => "500x500>"
}
end
È possibile creare semplici task rake nella cartella lib/task (si dovrebbe assegnare un nome al file con. estensione rake)
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
Poi si può chiamare manualmente rastrello compito dalla console fornendo parametri dir_sorgente che sarà la cartella sul server (che può essere la cartella reale o montato a distanza)
rake import:images SOURCE_DIR=~/my_images/to/be/imported
Se si prevede di eseguire automaticamente questo suggerirei di andare per gemma Resque Scheduler.
Update: Per mantenere le cose semplici ho volutamente omesso gestione delle eccezioni
fonte
2010-09-27 14:24:53
anch'io bisogno di questo per convertire da un vecchio sistema in cui i file sono statici su disco in un ambiente Rails. Fondamentalmente basta aprire il file e assegnarlo all'attributo 'has_attached_file' del modello di destinazione e salvare. – Chloe