2017-07-17 2 views
0

Hallo Ich habe gegeben enthalten CodeAmazon S3 Variablen nicht in Heroku Umgebung arbeiten Schienen

def store_s3(file) 
    # We create a connection with amazon S3 
    AWS.config(access_key_id: ENV['S3_ACCESS_KEY'], secret_access_key: ENV['S3_SECRET']) 
    s3 = AWS::S3.new 
    bucket = s3.buckets[ENV['S3_BUCKET_LABELS']] 
    object = bucket.objects[File.basename(file)] 
    # the file is not the content of the file is the route 
    # file_data = File.open(file, 'rb') 
    object.write(file: file) 
    # save the file and return an url to download it 
    object.url_for(:read, response_content_type: 'text/csv') 
    end 

dieser Code korrekt funktioniert in meinen lokalen Daten in Amazon gespeichert, aber wenn ich eingesetzt Code in Heroku Server habe ich gemacht Variablen auf dem Server auch.

enter image description here

gibt es etwas, das ich hier fehlt mir bitte die Problem wissen lassen.

+0

'Ich hatte Variablen auf dem Server gemacht too' wie? – Nithin

+1

Ich sehe 'S3_BUCKET_LABELS' nirgends. –

+0

Überprüfen Sie die Heroku-Protokolle auf genaue Fehler –

Antwort

0

Ich sehe keine Region, in Ihrem Beispiel ist S3_Hostname Ihre Region? für mich war die Region wie 'us-west-2'.

0

Wenn Sie einrichten möchten Ihre s3 mit carrierwave und gem Nebel können Sie es tun, wie folgt auf config/initializers/carrierwave.rb

CarrierWave.configure do |config| 
    config.fog_provider = 'fog/aws' 
    config.fog_directory = 'name for s3 directory' 

    config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => 'your access key', 
    :aws_secret_access_key => 'your secret key', 
    :region => 'your region ex: eu-west-2' 
    } 
end