Dans mon application Rails, je laissez les utilisateurs télécharger une image lorsqu'ils créent une "version", et il doit télécharger directement sur S3. J'obtiens l'erreur suivante dans le développement et la production.
Je l'ai déjà fait sans problème avec CarrierWave, mais je ne peux pas comprendre ce que je fais mal maintenant que j'utilise de papier. Toutes les corrections que j'ai vues sur Ainsi et ailleurs sont des problèmes d'héroku, mais je reçois le même problème sur le développement et aucun des correctifs n'a aidé. P> Voici le code pertinent ("... "Indique les extraits non pertinents): p> _Form.html.erb strong> p> Heroku config (avoir la même chose dans .bash_profile pour le développement) strong> p> Je sais que cela devrait être extrêmement simple et je suis sûr que j'ai juste oublié quelque chose d'évident, mais je vais sur Merci d'avance! P> a une réponse alors avec ce qui précède peut être trouvé ici . p> p>
/ReC.Estrong>/strong.html.erbookshow.html.erb p> code> GEM corrigé la plupart des choses pour moi. Juste au cas où d'autres disposent de ces mêmes problèmes, j'ai également eu un autre problème qui faisait celui-ci déroutant pour moi. Si vous rencontrez des problèmes de Heroku et un
PaperClip :: PaperCliPError (modèle d'élément manquant requis Att_Accessor pour 'image_file_name'): code>, assurez-vous d'exécuter
Heroku Rake DB: migrer code> Redémarrez Heroku avec
Heroku Redémarrez code>. J'ai chargé mon schéma et supposé à tort que je n'aurais pas besoin de le faire. P>
3 Réponses :
Je pense que c'est parce que et PaperClip :: Storage :: S3 DOC semble confirmer que, même étant si mal écrit / formaté. p> EDIT: P> Dans l'un de mes projets, j'utilise PaperClip avec le gemme de brouillard et cela fonctionne bien < / p> : le godet code> doit être une option transmise à la papteClip à ne pas sur S3.
Correction de configuration
Cela ne semblait pas avoir changé malheureusement, je l'ai inclus dans la S3_Credentials selon le Procédure à suivre à Heroku Pour PaperClip . Je vais y examiner davantage, peut-être que quelque chose dans cette procédure était incorrect? Merci pour ton aide!
À mon avis, vous devriez vous en tenir auprès de PaperClip's Readme, pas de Guide de Heroku qui sait que personne ne sait quel âge.
Il a été posté / mis à jour en avril et écrit par un Dev à Pensothbot, mais oui, je l'ai également examiné à travers le livre LoadMe.
Vient de voir votre édition avec le brouillard. J'ai utilisé cela auparavant avec CarrierWave et ça a bien fonctionné, je vais essayer d'essayer maintenant. Merci d'avoir collé avec ça!
J'ai passé ma belle part de combat avec cela il y a quelque temps;)
J'allais suggérer de déplacer le seau en dehors du S3_Credentials code> hachage, mais si vous regardez la source de l'option de stockage S3, le format est valide. Donc ce n'est pas le problème.
Je suis passé au brouillard et tout fonctionne! Je n'ai jamais réparé mon problème avec la gemme AWS-S3, mais oh bien le brouillard est meilleur pour ce que je fais plus tard de toute façon. Merci beaucoup pour toute votre aide!
Grande réponse, c'est très utile pour moi.
Dans mon cas, c'était que j'utilisais contremaître (Heroku) qui utilisait un fichier .env em> pour stocker des variables d'environnement. Donc, quand j'ai fait Qu'est-ce que j'ai fait pour exécuter ma migration a été ajouté temporairement mon DirectLñy AWS Credentials dans le bloc de configuration de Carrierwave, puis supprimez-les après ... P>
Ce n'est pas une solution permanente car la prochaine fois que vous migrez, cela dira la même chose ... P>
Pour la solution permanente Voir: Utiliser des variables d'environnement dans la tâche Rake < / p>
Qui dit UTILISATION: rake dB: migrer code> il n'a pas pu trouver le
env ['aws_access_key_id'] code> p> p>
FONMER FONMER RAKE RAKE SOIT_TASK CODE> Ainsi, toutes les variables définies dans .env sont chargées pour la tâche code> rake p> p>
Ajoutez ceci à votre fichier Application.rb à l'intérieur du module et de la classe. Créez un local_env.yml code> fichier et placez vos variables d'environnement. Ce code chargera vos variables d'environnement sur le démarrage du serveur:
config.autoload_paths += %W(#{config.root}/lib)
config.before_configuration do
env_file = File.join(Rails.root, 'config', 'local_env.yml')
YAML.load(File.open(env_file)).each do |key, value|
ENV[key.to_s] = value
end if File.exists?(env_file)
end
Quelle version de PaperClip utilisez-vous?
3.4.2 - J'ai
GEM "PaperClip", "~> 3.0" code> dans mon gemfile.
Je suppose qu'une chose à essayer est exécutée
aws_bucket = appName Rails Server CODE> et voyez si vous obtenez toujours l'erreur.
De plus, le problème se produit-il dans votre développement env et ON Heroku ou avez-vous été testé que dans votre développement env?
Cela se produit à la fois sur le développement et la production / Heroku de la même manière, je suppose que c'est pourquoi j'ai supposé que c'était une erreur muette évidente que j'ai négligée.
Pouvez-vous ajouter du code de contrôleur?
Ce sont simplement les rails par défaut générés au contrôleur dans la fonction de mise à jour. De regarder les documents en papier, la seule raison de changer ce serait si vous aviez des validations github.com/thoughtbot / PaperClip # Validations