Ich habe eine Rails 5 App auf einem Ubuntu 16.04 Server bereitgestellt. Es gibt jedoch ein Problem mit der Paperclip-Konfiguration.Problem mit Paperclip und Capistrano
Ich benutze den Figaro Edelstein, um meine Umgebungsvariablen zu speichern. Meine Büroklammer Konfiguration sieht wie folgt aus:
config/environments/production.rb
config.paperclip_defaults = {
storage: :s3,
bucket: 'anthonycandaele',
s3_region: 'eu-west-1',
s3_credentials: {
access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"),
secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY"),
s3_host_name: "s3-eu-west-1.amazonaws.com",
}
}
diese arbeitete in der Entwicklung gut.
Aber wenn ich versuche, meine app zu implementieren, erhalte ich einen Fehler, wenn ich versuche mit Capistrano zu implementieren:
log/capistrano.log
INFO [3b1c6af3] Running bundle exec rake assets:precompile as [email protected]
3245 DEBUG [3b1c6af3] Command: cd /opt/www/personalsite/releases/20170119174557 && (export RAILS_ENV="production" ; bundle exec rake assets:precompile)
3246 DEBUG [3b1c6af3] »·rake aborted!
3247 DEBUG [3b1c6af3] »·KeyError: key not found: "AWS_ACCESS_KEY_ID"
Also habe ich versucht, das Problem mit Einstellung der Papierklammer Konfiguration zu beheben:
config.paperclip_defaults = {
storage: :s3,
bucket: 'anthonycandaele',
s3_region: 'eu-west-1',
s3_credentials: {
access_key_id: ENV["AWS_ACCESS_KEY_ID"],
secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
s3_host_name: "s3-eu-west-1.amazonaws.com",
}
}
jetzt bin ich in der Lage mit Capistrano zu implementieren, aber wenn ich versuche, eine Datei mit der App zu laden, ich bin ein missingcredentialserror mit AWS bekommen:
Hat jemand Erfahrung mit der Verwendung von Paperclip und Speichern der Umgebungsvariablen mit Figaro?
Danke für Ihre Hilfe,
Anthony
ist meine Vermutung, dass die Geheimnisse tatsächlich nicht in der Menge Umgebung bei der Bereitstellung. Könnten Sie versuchen, 'puts ENV [" AWS_SECRET_ACCESS_KEY "]' zu Ihrer production.rb hinzuzufügen, um zu sehen, ob etwas verloren geht? –
Sie haben Recht, ich lege den AWS_SECRET_ACCESS_KEY auf den Entwicklungsserver und ich habe den Wert zurück. Aber wenn ich den AWS_SECRET_ACCESS_KEY auf den Produktionsserver setze, bekomme ich keinen Wert zurück. Wie kann ich das lösen? – Toontje