Questions autour de file_field et attachment_fu et Amazon s3

Bonjour,

Je suis en train de travailler sur l’upload d’image sur S3 avec
attachment_fu.

Je n’ai pas trop de problème pour charger et afficher une image (quand
je dis pas trop de problème, j’ai quand même un peu galéré ;)) mais
j’ai encore quelque questions :

1- je ne sais pas comment remettre à blanc la zone de file_field (dans
le cas ou l’utilisateur ne veut plus charger d’image.
2- Quel moyen utiliseriez vous pour faire une “preview” de l’image que
vous allez charger. Sachant que votre modèle auquel vous rattachez
l’image (un commentaire par exemple) n’est pas encore validé (et donc
sauvé)3- rien à voir avec rails, mais si quelqu’un a déjà utilisé amazon S3
j’aimerai savoir ce qu’il en pense et aussi comment on peut voir les
éléments chargés, j’ai essayé ave Jungle mais je n’y arrive pas

Merci de votre aide
Nicolas

En jouant un peu avec attachment_fu, j’ai l’impression qu’il stocke
une mauvaise taille:

  • sur l’image il y a la taille originale de l’image (avant resizing)
  • le thumbnail contient la taille de l’image retaillée,

Avez vous eu ce problème?

Mon modèle contient :
has_attachment :content_type => :image,
:storage => :s3,
:max_size => 5.megabytes,
:resize_to => ‘450x450>’,
:thumbnails => { :thumb => ‘100x100>’ },
:processor => ‘Rmagick’

Je suis sur Mac>
Nicolas

Je ne sais pas où tu en es de ton processus de développement, mais si tu
n’en es pas trop loin à ta place je considèrerais d’essayer plutôt
paperclip…

http://www.thoughtbot.com/projects/paperclip

Perso j’ai abandonné attachment_fu après pas mal de problèmes sérieux,
dont
l’impossibilité de l’étendre un peu en relisant le code.

Le 7 septembre 2008 12:47, Tranquiliste [email protected] a
écrit :

has_attachment :content_type => :image,
:storage => :s3,
:max_size => 5.megabytes,
:resize_to => ‘450x450>’,
:thumbnails => { :thumb => ‘100x100>’ },
:processor => ‘Rmagick’

Je suis sur Mac>
Nicolas


Michel B.

Le 7 septembre 2008 13:36, Michel B.
[email protected] a
écrit :

Je ne sais pas où tu en es de ton processus de développement, mais si tu
n’en es pas trop loin à ta place je considèrerais d’essayer plutôt
paperclip…

http://www.thoughtbot.com/projects/paperclip

Perso j’ai abandonné attachment_fu après pas mal de problèmes sérieux, dont
l’impossibilité de l’étendre un peu en relisant le code.

idem

paperclip est simple, ne nécessite pas de model spécifique et fonctionne
avec S3 aussi.

il existe aussi upload column

NG

J’en suis vraiment au début.
Je vais regarder paper clip, s’il supporte S3 et tout type de
documents (image, pdf, text, msword)

Ca peut être une solution

Merci

PS : Une question très bête : vous faites comment pour supprimer les
migrations relatives aux modèles d’attachment_fu qui se trouvent au
mileu de toutes mes autres migrations, vous annulez ces migrations et
supprimez les fichiers correspondants?

Oh, et un autre bonus de paperclip par rapport à af, c’est qu’il n’y a
pas Ã
installer de library ruby comme RMagick et qu’il travaille avec une
meilleur
empreinte mémoire. Il suffit d’avoir ImageMagick d’installé (90% des
serveurs mutu l’ont), et il est piloté directement en ligne de commande.

Le 7 septembre 2008 16:22, Tranquiliste [email protected] a
écrit :

migrations relatives aux modèles d’attachment_fu qui se trouvent au
mileu de toutes mes autres migrations, vous annulez ces migrations et
supprimez les fichiers correspondants?


Michel B.

J’ai vu ça.
Je suis en train de regarder la doc et j’ai l’impression qu’il stocke
l’image originale. Est ce qu’il est possible de la redimensionner à la
volée car si j’ai bien compris la doc, l’attribut :style ne concerne
que les thumnails générés.

J’ai aussi lu que dans le cas de pdf il générait un thumbnail par
page, est ce vraiment le cas?

Ca dépend où sont tes migrations à supprimer. Si elles ne sont pas à la
fin
de la liste des migrations, il vaut peut-être mieux faire une nouvelle
migration qui retirent la table du modèle à supprimer. Après, ça dépend
beaucoup de si tu utilise un outil de versionnage (cvs, svn, git…) et
si
tu travail en collaboration avec d’autres. Si c’est le cas, alors oui tu
devrais faire une nouvelle migration à chaque changement de base de
données,
histoires que tout le monde puisse être sûr qu’un rake db:migrate mette
la
base dans l’état voulu.

Le 7 septembre 2008 16:40, Michel B.
[email protected] a
écrit :

Je vais regarder paper clip, s’il supporte S3 et tout type de


Michel B.


Michel B.

Merci beaucoup,

Je pars pour 3 heures de train, ma batterie chargée à fond, je vais
essayer de faire quelques essais

Je n’ai pas essayé le thumbnailing avec des PDFs, mais rien ne coûte de
faire un petit essai de ton côté…

oui en effet c’est un problème, tu peux néanmoins changer le type de format
de l’imagette , mais pour un pdf multipage il te génère plusieurs
imagettes
en plus non accessibles (il rajoute un [n] après)

voir sur la mailing list de paper clip si il y a une solution.

NG

Tu peux tout redimensionner à la volée, si tu ne précise pas dans les
dimensions celles de l’original il le laisse tel quel, si tu les
précises
(:original => dimensions) il va le redimmensionner conformément aux
dimensions indiquées.

Je n’ai pas essayé le thumbnailing avec des PDFs, mais rien ne coûte de
faire un petit essai de ton côté…

Le 7 septembre 2008 16:47, Tranquiliste [email protected] a
écrit :


Michel B.

Si je ne m’abuse, paperclip est bien quand tu n’as qu’un seul “type”
de fichier attaché à un modèle. Sinon ça va être rapidement être le
bordel dans la table de la bdd. Mais je me trompe peut-être.
J’aimerais bien voir comment tu gères plusieurs “types” (au sens STI)
de fichiers attachés et comment tu gères le fait qu’un type de fichier
attaché peut-être attaché à plusieurs modèles de base (par exemple,
User, Group et Organization).
De plus, attachment_fu supporte plusieurs backends dont mini_magick
qui fait en fait appel au binaire image_magick.
Donc pour le moment, à part si tu argumentes un petit peu, ton
commentaire au sujet de attachment_fu ressemble à du FUD.

++

yk

Le 7 septembre 2008 13:36, Michel B.
[email protected] a écrit :

comment tu gères le fait qu’un type de fichier
attaché peut-être attaché à plusieurs modèles de base (par exemple,
User, Group et Organization).

Yann,

Pour faire cela, ne suffit il pas que tu crées un model Document (avec
has_attachement)

Et que pour ce modele tu fasses has_many :groups, has_many :org

Nicolas

J’ai fait des tests, mais le resizing et la génération des miniatures
ne fonctionnent pas. Est ce que j’ai un problème avec imagemagick?
Faut il l’inclure qq part? Je n’avais pas ce problème avec
attachment_fu et Rmagick

Nicolas

Le 7 septembre 2008 17:06, Yann KLIS [email protected] a écrit :

Donc pour le moment, Ã part si tu argumentes un petit peu, ton
commentaire au sujet de attachment_fu ressemble à du FUD.

Je ne vois pas vraiment en quoi le fait d’attacher différents types de
fichiers à un modèle doit poser problème, peut-être que tu as un exemple
concret en tête ?

Au contraire d’attachment_fu qui impose d’avoir un modèle pour chaque
type
de document, avec paperclip tu peux directement attacher un document
dans la
table de l’élément qui l’héberge, mais tu n’est pas obligé de le faire.
Si
par exemple tu veux une liaison de type has_many, tu peux très bien
faire un
modèle Document pour héberger le doc, et qui porte l’association ; au
contraire, la BD reste beaucoup plus propre parce que tu n’es pas forcé
de
faire des modèles en plus pour attacher un document dans une liaison de
type
has_one.

Ensuite, l’héritage au sens sti c’était totalement déconseillé avec
attachment_fu, j’ai essayé, je te conseille d’éviter. Pareil avec
paperclip,
sauf qu’avec paperclip tu n’en a pas autant besoin, puisque tu n’as pas
besoin de créer des modèles spécifiques pour héberger la plupart des
fichiers.

Pour faire qu’un modèle Document soit attachable à plusieurs autres
modèles,
tu peux faire :

class Document

has_attached_file …

belongs_to :attachable, :polymorphic => true
end

class Page

has_many :assets, :as => :attachables

end

class Chapters

has_one :asset, :as => :attachable

end

Mais en supposant que le modèle Chapters veuille seulement une image
d’illustration, ce serait plus pertinent de faire :
class Chapters

has_attached_file …

end

Ce qui t’évite de faire des héritages sti pour simplement modifier la
façon
dont le fichier associé est traité.

Pour le support de plusieurs backends, je ne dis pas. C’est juste que ça
ne
me sert à rien, je préfère un backend qui marche sur l’essentiel des
plateformes et qui n’est pas gourmand. Il se trouve qu’utiliser
imagemagick
directement en ligne de commande remplit ces deux fonctions, qu’en plus
ça
m’évite d’avoir à compiler sur le serveur de l’hébergeur une version
spécifique d’ImageMagick pour que ça marche avec le module ruby (je me
suis
tapé deux fois cette opération à cause d’attachment_fu, ça ira je n’ai
pas
envie d’en faire une 3°).

Enfin, il faut bien reconnaître que le code de attachment_fu est très
ardu Ã
lire et à comprendre, ce qui m’a fait perdre un temps fou du temps où je
cherchais à lui donner une toute petite fonctionnalité en plus (pouvoir
générer un onglet en recadrant une zone spécifique ; ça ne semble pas
compliqué dit comme ça, mais au bout du 4° problème sérieux et imprévu
j’ai
commencé à trouver que le principe de moindre surprise était
sérieusement
mal en point).

Pour faire la même chose avec paperclip, j’ai mis 1/2 journée de l’idée
à la
réalisation complète et sans bug.

Bon, voilà , je crois que j’ai assez argumenté.

Ah, si une dernière chose, je ne vois pas pourquoi tu m’accuse de faire
du
FUD. Si je ne me trompe pas, FUD ça veut dire “Fear, Uncertainty and
Doubt”,
et si je ne me trompe toujours pas :

  • je n’ai pas essayé de faire peur à qui que ce soit
  • je n’ai pas non plus essayé d’embrouiller qui que ce soit
  • je n’ai pas non plus essayé de faire douter qui que ce soit

J’ajoute que je n’ai pas d’actions dans l’entreprise richissime qui vend
Ã
prix d’or le brevet de paperclip, et pas non plus d’intérêt à détruire
le
formidable fleuron étendard du logiciel libre qu’est attachment_fu, si
ce
n’est que je le trouve très en-dessous du premier de tous les points de
vue
qui m’intéressent (facilité de prise en main, facilité d’utilisation,
facilité d’amélioration, facilité d’installation et de mise en
production).

Merci donc de m’épargner les comparaisons gratuites avec les tenants de
logiciels propriétaires et leurs pratiques véreuses.


Michel B.

Ben mon code est plutôt simple
J’ai le modèle

class Document < ActiveRecord::Base
has_attached_file :document, :styles => {:original =>
“450x450>”,:thumb => “100x100>” }
end

Le chargement se passe bien, il n’y a pas d’erreur particulière dans
le log. Par contre dans le répertoire document je n’ai que des
dossiers “original” qui contiennent l’original mal
retaillé.
Rmagick fonctionne bien avec imagemagick?

Je suis sur Mac, comment je fais pour vérifier que imagemagick est
bien
installé?

Attachment_fu n’est pas obligé de travailler avec ImageMagick, ça
dépend
de comment tu le configure il peut supporter plusieurs backends.

Par contre, paperclip ne travaille qu’avec ImageMagick, directement et
sans
RMagick. Donc tu as peut-être fait fonctionner attachment_fu sans
ImageMagick.

Ceci dit, ImageMagick s’installe parfaitement bien sous mac, voici
comment
je l’ai installé sur un mac pas plus tard que la semaine dernière :

Ceci fait, réessaye et ça devrait marcher au poil…

Le 7 septembre 2008 22:22, Tranquiliste [email protected] a
écrit :

le log. Par contre dans le répertoire document je n’ai que des
dossiers “original” qui contiennent l’original mal retaillé.

Rmagick fonctionne bien avec imagemagick?

Je suis sur Mac, comment je fais pour vérifier que imagemagick est
bien installé?


Michel B.

Merci de passer du temps,

Je viens de l’installer avec succès (version 6.2.8), mais
malheureusement, j’ai toujours mon problème : Pas de resizing, pas de
miniature avec paperclip.

As tu une autre idée?

Tout ce que tu es censé avoir c’est une version raisonnablement récente
d’ImageMagick.

Sinon, peut-être que quelque chose cloche dans le code, n’hésite pas Ã
poster pour voir si on peut te débugger.

Le 7 septembre 2008 22:08, Tranquiliste [email protected] a
écrit :

J’ai fait des tests, mais le resizing et la génération des miniatures
ne fonctionnent pas. Est ce que j’ai un problème avec imagemagick?
Faut il l’inclure qq part? Je n’avais pas ce problème avec
attachment_fu et Rmagick

Nicolas


Michel B.

LÃ je creuse le fond du baril.

Tu as pensé à tester “a mano” le fonctionnement d’ImageMagick ?

convert -resize 50% -quality 80 input.jpg output.jpg

Essaye ça en adaptant avec une image quelconque.


Michel B.