Ich habe Probleme, carrierwave und capistrano miteinander zu spielen.Carrierwave und Capistrano mit Schienen verwenden
Um zu starten, verwende ich this method, um ein öffentliches Verzeichnis und ein privates Controller-behandeltes Verzeichnis für Downloads zu verwenden. Tl; dr, Carrierwave-Wurzel ist eigentlich Rails.root
, und nicht public
. Jedoch habe ich das für URLs (da Rails public
nicht wörtlich in der URL verwendet), indem Sie eine Basisklasse definieren, die den öffentlichen Stamm für alle nicht-privaten Dateien festlegt.
Wie auch immer, ich fing schließlich an zu versuchen, Code zur Produktion zu drücken. Alles ist gut gegangen! Meine Uploads zeigten sich gut. Als ich jedoch eine weitere Bereitstellung durchführte, verlor ich alle meine Bilder im öffentlichen Verzeichnis.
Dies ist ein gut dokumentierter Fall für Capistrano - es beinhaltet nur Einstellung :linked_dirs
. In meinem Fall habe ich die folgende Zeile verwendet.
set :linked_dirs, %w{public/assets public/uploads downloads}
Wo public/assets
meine allgemeine css/js Dateien waren, public/uploads
waren meine Multimedia-Dateien und downloads
waren meine geschützten Dateien.
Leider hat dies mein Problem nicht gelöst. Aus irgendeinem Grund erhalten alle Bilder eine 404
, obwohl sie im richtigen Pfad aufgelistet werden.
Weider immer noch funktioniert die geschützte downloads
Ordner ganz gut! Vielleicht hat das etwas damit zu tun, die Wurzel in Carrierwave zu setzen? An diesem Punkt bin ich versucht, nur Büroklammer für meine öffentlichen Dateien und Carrierwave für private zu nehmen.
Ich bin seit gut 7 Stunden hier und ich kann immer noch nicht herausfinden, was zu tun ist.
meine deploy.rb Datei
meine problematische image uploader Datei
meine Arbeit product file uploader Datei
meine nginx.conf Datei
Gleiche wie du meine Capistrano deploy abgeschlossen haben versucht, ich bin 99% fertig, aber immer noch einige kleine Probleme, habe ich nicht spezifizierte root in meinem fall habe ich einfach 'def speicher;" system/ckeditor/bilder/# {modell.id} "; end;', also nehme ich an, in Ihrem Fall können Sie versuchen, 'def root' zu kommentieren. – sahil
Haben Sie carrierwave so eingerichtet, dass Rails.root standardmäßig anstelle des öffentlichen Verzeichnisses verwendet wird? Ich habe es leider versucht und nicht –
Ich habe meine [Dateien hier] hinzugefügt (https://gist.github.com/sahil290791/4ec9ad72dd0c58ce99b39b93710f70e6), bemerkte ich eine Änderung in Ihrem und meine 'nginx.conf' Datei könnte sein, weil Sie Puma und ich verwenden benutze 'phusion passagier', du hast' location^~/assets/{', wo ich' location^~/system/{'habe und root dann wieder in der Datei' root/home/deploy/apps/x/current/public; '. Ich konnte meinen capistrano - Einsatz mit den letzten Änderungen in 'nginx.conf' abschließen, da ich irgendwann 404 nicht für die Bilder gefunden habe, die in 'public/system' vorhanden waren. – sahil