2010-10-23 5 views
2

Je suis sur Heroku, et c'est une chose de portefeuille que je mets en place sur github pour les employeurs potentiels à regarder, alors évidemment je ne sais pas Je veux coller mes clés dans un fichier S3.yml. J'ai exporté S3_KEY et S3_SECRET dans mon environnement à la fois sur Heroku et sur ma machine et ruby ​​peut y accéder. Mais quand je tente de télécharger, il me donne l'erreur suivante:AWS :: S3 :: MissingAccessKey dans Paperclip mais j'ai défini les deux

AWS::S3::MissingAccessKey in Portfolio itemsController#update 

You did not provide both required access keys. Please provide the access_key_id and the secret_access_key. 

La trace est sans importance, sauf pour ma ligne de commande #, qui fonctionne très bien jusqu'à ce que je tente et de télécharger un fichier. Voici ce que j'ai:

class Asset < ActiveRecord::Base 
    attr_accessible :image, :image_file_name, :image_content_type, :image_file_size, :portfolio_item_id, :order 

    has_attached_file :image, 
    :styles => { 
     :thumb => "100x100#", 
     :small => "300x300", 
     :large => "600x600>" 
       }, 
    :storage => :s3, 
    :s3_credentials => { 
     :access_key_id => ENV["S3_KEY"], 
     :secret_access_key => ENV["S3_SECRET"] 
         }, 
    :bucket => "bucketybucket", 
    :path => "portfolio" 

end 

Quelqu'un sait ce qui se passe ici? Comment est-ce que je construis mal ce hash?

Oh, et je l'ai suivi ce fil, pas de dés: Paperclip and Amazon S3 Issue

+0

ayant exactement le même problème ... avez-vous pu comprendre cela? –

Répondre

0

Le problème est que la variable Enviroment dans Heroku est différente que la variable d'environnement dans votre système, il peut arriver que l'application fonctionne dans un environnement

1

même problème ...

semble comme ENV const ne se charge pas avant de charger le module. à résoudre en utilisant l'argument de fichier comme celui-ci

:s3_credentials => Rails.root.join('config/amazon_s3.yml') 

et amazon_s3.yml

access_key_id: 'your_key' 
secret_access_key: 'your_sec_key' 
bucket: 'somebucket' 

En outre, vous pouvez définir la variable d'environnement en utilisant config Heroku: ajoutez commande, qui est décrit dans Heroku DevCenter

Questions connexes