Ich arbeite an einem einfachen Projekt mit Paperclip, um Bilder hochzuladen. Alles hat gut funktioniert, bis ich S3 mit Paperclip zu integrieren versuchte. Beim Hochladen eines Benutzerbildes bekomme ich einen NoMethodError (undefined method 'match' for nil:NilClass):
Fehler. Das passiert nur, wenn ich meine S3-Konfiguration aktiv habe - wenn ich die Datei hochgeladen habe, lade ich sie perfekt hoch.AWS S3-Integration ergibt undefinierte Methode `match '
Meine Konfiguration:
development.rb:
....
....
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET_ID'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
My Model:
class User < ActiveRecord::Base
has_attached_file :image_file, default_url: "/myapp/images/:style/missing.png"
validates_attachment_file_name :image_file, matches: [/png\Z/, /jpeg\Z/, /tiff\Z/, /bmp\Z/, /jpg\Z/]
gesamte Fehlerausgabe von der Konsole:
NoMethodError (undefined method `match' for nil:NilClass):
app/controllers/images_controller.rb:33:in `block in create'
app/controllers/images_controller.rb:32:in `create'
Dinge, die ich versucht:
Ich habe die AWS-Schlüssel und den Bucket-Namen direkt in den Code als Umgebungsvariable eingefügt.
Wie oben erwähnt, habe ich die AWS-Konfiguration in meiner Umgebungsdatei auskommentiert und es schien perfekt zu funktionieren.
Es ist wahrscheinlich erwähnenswert, dass ich die fog
Juwel früher installiert starten Konfiguration für Google Cloud Storage, entschied sich aber mit S3-Stick statt. Ich benutzte gem uninstall fog
, um den Edelstein zu entfernen, aber es scheint, dass einige Abhängigkeiten zurückblieben.
Ich habe das gleiche Problem. Hast du schon eine Lösung gefunden? – rguerrettaz
Haben Sie versucht, hinzuzufügen: s3_region => 'us-east-1' (oder was auch immer die Region, in der Ihre s3 ist) Hier ist ein Link, der helfen kann: https://github.com/thoughtbot/paperclip/blob/95acf3b898bd782f4429d42fd2d8812505390328/lib /paperclip/storage/s3.rb#L96 – rguerrettaz
Ja, ich habe festgestellt, dass, sobald ich meine AWS-Region hinzugefügt habe, es gut zu funktionieren scheint. Als Antwort darauf wird dies in den Dokumenten nicht wirklich ausführlich erklärt - und war noch verwirrender, da ich im Prinzip den eingefügten Code aus einem anderen Projekt kopierte, das einwandfrei funktioniert hatte. – PSCampbell