Zum Beispiel:Was bedeutet "<< -" in Ruby?
code = <<-EOH
bundle install
bundle exec unicorn -c /etc/unicorn.cfg -D
EOH
Was dieser Code zu tun hat? Was heißt <<-
?
Zum Beispiel:Was bedeutet "<< -" in Ruby?
code = <<-EOH
bundle install
bundle exec unicorn -c /etc/unicorn.cfg -D
EOH
Was dieser Code zu tun hat? Was heißt <<-
?
Es heißt Heredoc. Eine einfache Möglichkeit, mehrzeilige Strings zu definieren, die einfache oder doppelte Anführungszeichen enthalten können, ohne dass sie entfernt werden müssen.
Siehe mehr here, zum Beispiel.
Oft verwenden Sie heredocs, um große Codeabschnitte zu definieren. Some Editoren wissen darüber und können Syntax für Sie dort hervorheben (wenn Sie Sprache angeben). Schauen Sie:
Ich mag die Syntax Highlighting und lernte heute das auch erstmal. –
Sieht für mich wie heredoc. Die -
ermöglicht dem Endbegrenzer Whitespace davor zu ignorieren.
Eine einfache Google-Suche gab mir this.
Heredocs * würde * ein Schmerz sein, zu googeln. Das Konzept und die Implementierung sind beide seltsam, wenn Sie sie noch nie zuvor gesehen haben. –
Ich hatte noch nie von Heredoc gehört, also war Google fruchtlos. Manchmal ist es schwierig, Namen auf unbekannte Symbole zu setzen. – fontno
Ein '<< - END' in bash/shell löscht die vorhergehenden Leerzeichen, aber in Ruby ist es nicht so einfach, siehe meine Antwort mit den Änderungen in 2.3.x, die ein brachte Bit der Feature-Parität, während eine neue Syntax erforderlich ist. – dragon788
Sie mehrere Befehle in einem Block wie dies in der Chef-Rezept
bash 'Install ftppwd' do
code <<-EOH
mkdir #{ftppwd_dir}
chmod 775 #{ftppwd_dir}
chgrp #{batch_id} #{ftppwd_dir}/*
chown #{batch_id} #{ftppwd_dir}/*
EOH
Es gibt auch für Ruby eine neuere HEREDOC Syntax passieren kann <<~END
, die mehr ähnelt, was man normalerweise sehen in den meisten Shells und anderen Sprachen mit der ~
anstelle der -
, um Ruby zu sagen, dass das führende Leerzeichen gelöscht werden soll, um mit der am wenigsten eingerückten Zeile im Block übereinzustimmen.
https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc
Oh, verpasste diesen. –
Symbolhound ist eine Möglichkeit für die Syntax zu suchen, die Google nicht verarbeiten kann. –