Forum: PC-Programmierung Win merkwürdiges Problem mit Rails 6 / Ruby 2.6.5p114


von Taucher (Gast)


Lesenswert?

Die Variable response hat nach dem Aufruf `echo \""#{passwort}"\" | 
cracklib-check` den Wert "X9d3dlgu4j OK\n"

Erwartungsgemäß gibt response.ends_with?('OK\n') true zurück

Trotzdem wird in der folgenden Version der Methode PasswortOK? der 
then-Block der if-Klausel ausgeführt:
1
def PasswortOK?
2
    response = `echo \""#{passwort}"\" | cracklib-check`
3
    if !response.ends_with?('OK\n')
4
        errors.add(:passwort, "Das Passwort ist zu schwach")
5
    end
6
end

Warum?

Wenn ich den Code folgendermaßen umbaue:
1
def PasswortOK?
2
    response = `echo \""#{passwort}"\" | cracklib-check`
3
    if response !~ /OK\n$/
4
        errors.add(:passwort, "Das Passwort ist zu schwach")
5
    end
6
end

wird – korrekter Weise – der then-Block nicht ausgeführt.

Was ist das faul?

von Detlef W. (detlefr)


Lesenswert?

Taucher schrieb:
1
if !response.ends_with?('OK\n')

Das Ok\n muss in doppelte Anführungszeichen. Nur dann wird das \n als 
Zeilenumbruch gewertet.

von Taucher (Gast)


Lesenswert?

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.