2016-03-22 14 views
0

Ich uploads auf Amazon S3 mit Carrierwave, die gut funktioniert.Schienen AWS S3 Datei löschen

aber jetzt möchte ich eine Löschfunktion hinzuzufügen ich dies versucht:

AWS::S3::S3Object.delete(@vid.video, 'bucket') 

ich diesen Fehler habe:

uninitialized constant MoviesController::AWS 

Der Grund ist klar .. Aber wie kann ich die AWS konstant eingestellt richtig und wo?

config/initializers/carrierwave.rb

CarrierWave.configure do |config| 
config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => '----', 
    :aws_secret_access_key => '----', 
    :region => 'eu-central-1', 
} 
config.fog_use_ssl_for_aws = false 
config.fog_directory = 'bucekt' 
config.storage = :fog 
end 
+0

Haben Sie das 'AWS SDK gem' zu' Gemfile' hinzugefügt? –

+0

ja ich habe das getan – Felix

+0

Ich bin mir nicht sicher, aber Sie müssen auch das 'AWS' Juwel in Ihrem Code konfigurieren. Mein Bauchgefühl ist, es ist nicht Autoloading, aber es sollte. –

Antwort

1

Sie müssen zuerst konfigurieren, dass die AWS gem. Fügen Sie diesen Code der Datei config/initializers/aws.rb hinzu.

Aws.config.update({ 
    region: '<default-region>', 
    credentials: Aws::Credentials.new('<access-key-id>', '<secret-access-key') 
}) 

Sie können auch die Umgebungsvariablen AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_REGION auf Ihrem Server und die SDK sie automatisch abholen.

Dann überall in Ihrer Anwendung oder eine Controller-Aktion können Sie die S3 API wie folgt aufrufen:

def some_action 
    # You can simply call Aws::S3::Client.new 
    # if you are already configuring using the 
    # above methods or configure by passing 
    # parameters explicitly 
    s3_client = Aws::S3::Client.new(
    credentials: Aws::Credentials.new('<aws_access_key_id>', '<aws_secret_key>'), 
    region: '<aws_region>' 
) 

    # delete object by passing bucket and object key 
    s3_response = s3_client.delete_object({ 
    bucket: '<bucket-name>', # required 
    key: '<object-key>', # required 
    }) 
end 
+0

wenn ich die Aws einstelle. in aws.rb ... warum muss ich die Zugangsdaten erneut auf s3_client setzen? – Felix

+0

Bitte lesen Sie die Code-Kommentare :) –

+0

Wo setze ich den s3_client = ... Code? in aws.rb oder wo? – Felix