Ich arbeite an einem Rails-Projekt, auf dem ich ein Produktmodell mit einem Feld habe, um ein Bild hochzuladen. Ich benutze das Carrierwave-Juwel für die Uploads und das Projekt befindet sich auf einem Server, auf dem nginx läuft.CarrierWave :: Crop :: ProcessingError (konnte nicht beschneiden -: en ist kein gültiges Gebietsschema)
Ich muss die Bilder auf den Pfad public/uploads
innerhalb des Projekts hochladen. In der Entwicklungsumgebung funktioniert alles einwandfrei, aber bei der Produktion stürzt die Seite ab, wenn ich ein Bild hochlade.
Ich habe bereits das Produktionsprotokoll auf dem Server mit dem Befehl tails /var/log/nginx/error.log
überprüft, aber aus irgendeinem Grund zeigt es mich nur so weit vor den POST/PATCH Aktionen.
Das ist mein product
Modell:
class Product < ApplicationRecord
mount_uploader :picture, PictureUploader
end
Das ist mein picture uploader
Datei:
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process crop: [400, 400]
# Choose what kind of storage to use for this uploader:
storage :file
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
'uploads'
end
def extension_whitelist
%w(jpeg jpg png)
end
def content_type_whitelist
/image\//
end
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
def filename
"#{secure_token}.#{file.extension}" if original_filename.present?
end
protected
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
end
end
Und das ist die nginx-Konfiguration, die ich für den Standort haben:
server {
listen 8081;
server_name 127.0.0.1;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/project/current/public;
# Turn on Passenger
passenger_enabled on;
passenger_ruby /home/deploy/.rbenv/versions/2.4.1/bin/ruby;
}
Vielen Dank im Voraus :)
EDIT
Ich war das falsche Protokoll suchen. das Produktionsprotokoll wurde auf /var/www/project/current/log
Dies ist der Fehler, die ich bekomme:
D, [2017-07-04T16:50:19.330282 #1341] DEBUG -- : [c7b9956c-786f-440c-bc38-e13718f3493e] (0.1ms) BEGIN
D, [2017-07-04T16:50:19.331113 #1341] DEBUG -- : [c7b9956c-786f-440c-bc38-e13718f3493e] (0.2ms) ROLLBACK
I, [2017-07-04T16:50:19.331277 #1341] INFO -- : [c7b9956c-786f-440c-bc38-e13718f3493e] Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.7ms)
F, [2017-07-04T16:50:19.331669 #1341] FATAL -- : [c7b9956c-786f-440c-bc38-e13718f3493e]
F, [2017-07-04T16:50:19.331691 #1341] FATAL -- : [c7b9956c-786f-440c-bc38-e13718f3493e] CarrierWave::Crop::ProcessingError (Failed to crop - :en is not a valid locale):
F, [2017-07-04T16:50:19.331704 #1341] FATAL -- : [c7b9956c-786f-440c-bc38-e13718f3493e]
F, [2017-07-04T16:50:19.331716 #1341] FATAL -- : [c7b9956c-786f-440c-bc38-e13718f3493e] app/controllers/products_controller.rb:39:in `block in update'
[c7b9956c-786f-440c-bc38-e13718f3493e] app/controllers/products_controller.rb:38:in `update'
Anscheinend es ein Problem mit den locale-Dateien ist. Ich benutze auch das carrierwave-crop-on-fly Juwel, um das Bild zuzuschneiden, wenn es hochgeladen wird, was scheint, ein Teil des Fehlers zu sein.
Ich habe diese auf mi application.rb:
config.i18n.default_locale = :es
config.i18n.available_locales = :es
config.i18n.enforce_available_locales = true
ich die Frage aktualisieren würde, wenn ich die Antwort
Am Ende habe ich die en-Datei in Locale-Variablen und bekam den Fehler 'Übersetzung fehlt: en.errors.messages.mini_magick_processing_error'. Es stellte sich heraus, dass ich ImageMagick nicht auf dem Server hatte. Ich habe es gelöst, indem ich 'sudo apt-get install imagemagick' auf dem entfernten Server ausgeführt habe. Ich lasse die Frage für den Fall, dass jemand anderer so ahnungslos wie ich wäre: P – Kenneth
Sie können den Text aus diesem Kommentar als Antwort auf Ihre eigene Frage hinzufügen, das ist erlaubt und Sie werden anderen helfen, die ein ähnliches Problem in der Zukunft haben .Ein anderer Punkt ist, deinen Titel mit der Fehlermeldung zu aktualisieren, die du erhältst: "CarrierWave :: Crop :: ProcessingError (konnte nicht beschneiden -: en ist kein gültiges Gebietsschema)", das wird den Leuten mehr helfen. –