2012-03-06 1 views
0

J'utilise Paperclip with Rails pour télécharger des photos sur Amazon S3 et mon application est déployée sur Heroku. Maintenant, lorsque j'utilise la base de données fournie par Heroku (postgres), les téléchargements fonctionnent de manière optimale.Rails, Paperclip téléversé sur Amazon S3 ne fonctionne pas avec Amazon RDS mais travaille avec Postgres

Cependant, au moment où je passe à Amazon RDS, le téléchargement ne fonctionne pas.

Remarque: il n'y a aucun problème avec la configuration de RDS car le reste de l'application fonctionne parfaitement, c'est juste les images qui s'arrêtent de fonctionner. Je suppose que, peut-être (un peu comment) quand paperclip veut mettre une entrée dans la table des images, il ne peut pas accéder à la base de données quand il est sur RDS, mais peut très bien y accéder avec la base de données Postgres Heroku.

Des idées?

+0

Paperclip utilise la base de données par ActiveRecord. Cela ne semble pas être le problème. Avez-vous regardé votre production.log? Y at-il des exceptions? – iltempo

Répondre

0

Avez-vous déclaré votre champ paperclip comme attr_accessible Par exemple, dans mon code

class VenueImage < ActiveRecord::Base 

    belongs_to :venue 

    has_attached_file :image, 
    :styles => { :large => "1200x900#", :medium => "800x600#", :thumb=> "100x100#" } 

    validates_attachment_presence :image 

    validates_attachment_content_type :image, 
    :content_type => %r{image/.*}, 
    :less_than => 1.megabyte 

    attr_accessible :image 

end 

Ceci est juste une estimation grossière et il ne fait pas de sens qu'il travaillerait sous postgres et non sous RDS, mais attr_accessible est toujours un cas à trébucher sur et mérite d'être vérifié. Si tel est le problème, alors vous verrez quelque chose comme

Cannot mass assign attribute 'image' 

dans vos journaux

+0

Compris. Quand les uploads travaillaient localement (mysql) et pas sur RDS (aussi mysql). J'ai réalisé que ce n'était pas la base de données. Les journaux ont montré une erreur sur @ picture.save, donc j'ai réalisé qu'il y avait une erreur lors de l'enregistrement du fichier. quand j'ai comparé la table d'images localement par rapport à RDS, j'ai réalisé que l'un des champs avait la valeur NOT NULL sur RDS mais pas localement, et bien sûr je ne réglais pas ce champ, d'où l'erreur. J'ai dû changer le champ manuellement manuellement, mais j'ai oublié de mettre à jour la migration. un problème de pratique des mauvais rails: P. Merci pour votre réponse btw – Varun

+0

Cependant, je ne comprends toujours pas comment cela fonctionnait sur Postgres – Varun

Questions connexes