Das Hash-ähnliche Objekt ENV
ist ein einfacher Ruby, nicht Teil von Rails. Vom fine ENV#[]
manual:
Ruft den Wert für die Umgebungsvariable name
als String. Gibt nil
zurück, wenn die benannte Variable nicht existiert.
und die fine ENV#fetch
manual:
Ruft die Umgebungsvariable name
.
Wenn der angegebene Name nicht existiert und weder default
noch ein Block a zur Verfügung gestellt wird, wird ein IndexError ausgelöst. Wenn ein Block angegeben wird, wird er mit dem fehlenden Namen aufgerufen, um einen Wert anzugeben. Wenn ein Standardwert angegeben wird, wird er zurückgegeben, wenn kein Block angegeben wird.
So wie Hash#[]
und Hash#fetch
, ist der einzige Unterschied, dass fetch
Sie das Verhalten angeben können, ob ein Schlüssel nicht gefunden wird (einen Standardwert fetch
, Standardblock zu fetch
oder zu erhöhen, eine Ausnahme bestanden bestanden verwenden) Während []
gibt Ihnen einfach nil
im Hintergrund, wenn der Schlüssel nicht gefunden wird.
Im speziellen Fall von:
ENV.fetch("MY_VAR")
ENV['MY_VAR']
der Unterschied ist, dass ENV['MY_VAR']
werden Ihnen nil
geben, wenn es kein MY_VAR
Umgebungsvariable ist aber ENV.fetch('MY_VAR')
wird eine Ausnahme ausgelöst.
Ihre Frage ist unklar. Sie * fragen explizit nach der * Syntax *, aber Sie haben eine Antwort akzeptiert, die die Syntax überhaupt nicht erklärt und nur über die * Semantik * spricht. –
@ JörgWMittag Es ist ziemlich klar für alle anderen, was sie fragen, nicht jeder konsultiert ein Wörterbuch, wenn er eine Frage stellt. Sie können gerne Ihre eigene Antwort angeben, wenn Sie Ihre Englischkenntnisse beherrschen müssen. –