Vorrei implementare uno spazio di archiviazione dedicato per ogni utente
registrato sulla mia app.
Uno spazio nel quale poter salvare e recuperare files.
In piccolo come google drive.
I documenti da gestire sono immagini e pdf in sola consultazione.
Vorrei inoltre gestire file xml, da importare ed esportare su mysql.
Tutto quanto vorrei potesse essere gestibile dall’utente con creazione
di directory, archiviazione di files, upload ecc …
Inizialmente avevo pensato alla creazione di utenti di sistema con tanto
di home e diritti, ma gestire molti utenti diventerebbe troppo pesante.
Ho cercato una gemma, ma non so bene neppure cosa cercare.
Il numero di utenti non un problema. Inizia a pensare dove vuoi
salvare questi file.
Se vuoi salvare i file sul cloud devi usare una gem appropriata, tipo
AWS-SDK se vuoi usare S3.
Se vuoi salvare i file su filesystem sufficiente una gem tipo
Paperclip, che quella con cui ho pi esperienza.
Per la gestione degli utenti puoi usare Devise.
Questa la strada pi semplice che mi viene in mente per arrivare a
quello che vuoi fare.
A titolo didattico per potrebbe essere stra-utile provare ad
implementare tutto senza usare gem, che possibile, magari ottieni
meno funzionalit ma capisci meglio quello che succede dietro le
quinte.
P.S. Se continuate a dire ‘gemma’ io comincio a dire ‘rubino’
Altrnativamente: un livello di directory solo cos pensano che ben
organizzato, e di nuovo modello molto semplice (basta che salvi
“directory”
come attributo del modello “File”).
Questo perch nella mia esperienza la gente non vuole usare le
directory,
vuole solo trovare le cose
Volendo scrivere tutto quanto “a manina” (si può dire manina ? ) cosa
dovrei usare ? system() ? exec() ? IO ?
ed in questo caso, come si risolve con i diritti sul file system ?
bisognerà riuscire ad usare sudo o pam o non so cos’altro per i comandi
della shell
ed una volta pubblicato su Heroku (p.e.), avrò i diritti per creare
utenti ed inviare comandi alla shell ?
Ho capito bene ?
E’ questo il modo di implementarlo senza gem (!) ?
il framework web ti da generalmente un Tempfile quando l’utente fa
upload,
quello che dovresti fare salvarlo in un posto dove sopravvive,
perch il Tempfile appunto temporaneo
Non credo ti serva usare system o exec, ti bastano le classi File,
FileUtil
e Dir.
Se lo facessi su heroku potresti comunque chiamare comandi da shell,
ma non avresti un file system persistente su cui salvarlo,
per cui dovresti metterlo, ad esempio, su s3.
Ma non ha senso che ti reinventi la cosa, usa paperclip o carrierwave.
Se invece lo vuoi fare tanto per imparare, allora conviene che ti leggi
i
sorgenti delle suddette gem