Probleme beim Ausführen eines Ruby-Skripts als Cron-Job

Probleme beim Ausführen eines Ruby-Skripts als Cron-Job

Ich habe ein Ruby-Skript, das ich als Cron-Job ausführen möchte. Es läuft einwandfrei, wenn ich es über die Eingabeaufforderung auf einem Linux-Rechner ausführe. Aber wenn ich dasselbe Skript mit einem Cron-Job ausführe, schlägt es fehl.

Ich erhalte den folgenden Fehler bei der Zeichenfolgencodierung. Ich bin mir nicht sicher, warum es nur auftritt, wenn ich es als Cron-Job ausführe. Ich habe meine Shell in Crontab auch auf /bin/bash eingestellt, was dieselbe Shell wie meine Eingabeaufforderung ist.

Der Fehler, den ich bekomme, ist

in „encode“: „\xE2“ auf US-ASCII (Encoding::InvalidByteSequenceError)

Die Codezeile, die den Fehler verursacht, ist

split.encode('utf-8).split(some_str)

Antwort1

Die Fehlermeldung besagt, dass Sie in der crontabUmgebung US-ASCII als Sprache eingestellt haben und dass in dieser Sprache die Zeichenfolge "\xE2" nicht existiert. Dies liegt höchstwahrscheinlich daran, dass die Zeichenfolge ASCII-8-Bit-kodiert ist, während Sie sie in UTF-8 konvertieren müssen.

Es ist möglich, dass die Zeichenfolge durch unsichtbare Zeichen verunreinigt wurde, wie es beim Ausschneiden und Einfügen häufig vorkommt.

Folgendes ist anzuwendenVorDurch Bearbeiten der Zeichenfolge sollte Ihr Problem gelöst sein:

  new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')

verwandte Informationen