Ich habe eine Schienenanwendung, die mehrere Modelle mit Büroklammerbefestigungen hat, die alle auf S3 hochgeladen werden. Diese App hat auch eine große Testsuite, die oft ausgeführt wird. Der Nachteil dabei ist, dass eine Tonne von Dateien bei jedem Testlauf auf unseren S3-Account hochgeladen wird, wodurch die Testsuite langsam läuft. Es verlangsamt auch die Entwicklung ein bisschen und erfordert, dass Sie eine Internetverbindung haben, um an dem Code zu arbeiten.Wie kann ich den Speichermechanismus von Paperclip basierend auf der aktuellen Rails-Umgebung einstellen?
Gibt es eine sinnvolle Möglichkeit, den Büroklammerspeichermechanismus basierend auf der Rails-Umgebung einzurichten? Idealerweise würden unsere Test- und Entwicklungsumgebungen den lokalen Dateisystemspeicher verwenden, und die Produktionsumgebung würde S3-Speicher verwenden.
Ich möchte auch diese Logik in ein gemeinsames Modul irgendeiner Art extrahieren, da wir mehrere Modelle haben, die dieses Verhalten benötigen. Ich möchte eine Lösung wie diese im Inneren jedes Modells vermeiden:
### We don't want to do this in our models...
if Rails.env.production?
has_attached_file :image, :styles => {...},
:path => "images/:uuid_partition/:uuid/:style.:extension",
:storage => :s3,
:url => ':s3_authenticated_url', # generates an expiring url
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:s3_permissions => 'private',
:s3_protocol => 'https'
else
has_attached_file :image, :styles => {...},
:storage => :filesystem
# Default :path and :url should be used for dev/test envs.
end
Update: Der klebrige Teil, dass die :path
und :url
Optionen der Befestigung müssen, ist abhängig davon, welche Speichersystem unterscheiden verwendet wird.
Alle Ratschläge oder Vorschläge würden sehr geschätzt werden! :-)
Gute Arbeit. Ja, es war viel mehr Abstraktion nötig, als ich zur Verfügung gestellt habe! :) –
Sehr gute Arbeit. Vielen Dank. Es hat mir wirklich geholfen. –
Ich hatte Probleme mit der oben erwähnten Konstanten/Hash-Methode, aber das funktioniert großartig, und ich mag es, wie ich meine ganze Büroklammer-Logik an einem Ort halten kann. Vielen Dank! – neezer