11
votes

"Définition requise: option de godet" pour PaperClip / S3

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.

EDIT: Je dois noter que cette erreur se produit lorsque vous essayez de télécharger à partir de la page Modifier la version sous forme de soumission. < PRE> XXX

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é.

Voici le code pertinent ("... "Indique les extraits non pertinents):

Development.rb xxx

production.rb < /p>













/ReC.Estrong>/strong.html.erbookshow.html.erb xxx

_Form.html.erb xxx

Heroku config (avoir la même chose dans .bash_profile pour le développement) xxx

edit: Voici ma partie correspondante de mon contrôleur trop < PRE> XXX

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 Cette procédure pas à pas ainsi que des corrections que j'ai trouvées et rien ne semble fonctionner. Y a-t-il une tâche de râteau ou un paquet que j'ai oublié de courir ou quelque chose?

Merci d'avance!

EDIT 2: Les réponses ci-dessous m'a aidé à sortir Beaucoup, et basculant vers le brouillard 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'): , assurez-vous d'exécuter Heroku Rake DB: migrer Redémarrez Heroku avec Heroku Redémarrez . J'ai chargé mon schéma et supposé à tort que je n'aurais pas besoin de le faire.

a une réponse alors avec ce qui précède peut être trouvé ici .


7 commentaires

Quelle version de PaperClip utilisez-vous?


3.4.2 - J'ai GEM "PaperClip", "~> 3.0" dans mon gemfile.


Je suppose qu'une chose à essayer est exécutée aws_bucket = appName Rails Server 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


3 Réponses :


19
votes

Je pense que c'est parce que : le godet doit être une option transmise à la papteClip à ne pas sur S3.
Correction de configuration xxx

et PaperClip :: Storage :: S3 DOC semble confirmer que, même étant si mal écrit / formaté.

EDIT:

Dans l'un de mes projets, j'utilise PaperClip avec le gemme de brouillard et cela fonctionne bien < / p> xxx


8 commentaires

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 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.



1
votes

Dans mon cas, c'était que j'utilisais contremaître (Heroku) qui utilisait un fichier .env pour stocker des variables d'environnement. Donc, quand j'ai fait rake dB: migrer il n'a pas pu trouver le env ['aws_access_key_id']

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 ...

Ce n'est pas une solution permanente car la prochaine fois que vous migrez, cela dira la même chose ...

Pour la solution permanente Voir: Utiliser des variables d'environnement dans la tâche Rake < / p>

Qui dit UTILISATION: FONMER FONMER RAKE RAKE SOIT_TASK Ainsi, toutes les variables définies dans .env sont chargées pour la tâche rake


0 commentaires

0
votes

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


0 commentaires