Por ejemplo:¿Qué significa "<< -" en Ruby?
code = <<-EOH
bundle install
bundle exec unicorn -c /etc/unicorn.cfg -D
EOH
¿Qué hace este código? ¿Cómo se llama <<-
?
Por ejemplo:¿Qué significa "<< -" en Ruby?
code = <<-EOH
bundle install
bundle exec unicorn -c /etc/unicorn.cfg -D
EOH
¿Qué hace este código? ¿Cómo se llama <<-
?
Se llama heredoc. Una manera fácil de definir cadenas de varias líneas que pueden incluir comillas simples o dobles sin necesidad de escapar de ellas.
Ver más here, por ejemplo.
A menudo se utiliza heredocs para definir grandes trozos de código. Some los editores saben sobre esto y pueden resaltar la sintaxis para usted allí (si especifica el idioma). Mira:
Me gusta resaltar la sintaxis y aprendí hoy también esa primera vez. –
Me parece que heredoc. El -
permite que el delimitador final ignore los espacios en blanco antes de él.
Una simple búsqueda en Google me dio this.
Heredocs * sería * un dolor para google. El concepto y la implementación son extraños si nunca los has visto antes. –
Nunca había oído hablar de heredoc, así que google fue infructuoso. A veces es difícil poner nombres a símbolos desconocidos – fontno
A '<< - END' en bash/shell eliminará el espacio en blanco anterior, pero en Ruby no es tan simple, veré mi respuesta con los cambios en 2.3.x que trajeron un bit de paridad de características mientras requiere una nueva sintaxis. – dragon788
Puede pasar varios comandos en un bloque de este tipo en Chef Receta
bash 'Install ftppwd' do
code <<-EOH
mkdir #{ftppwd_dir}
chmod 775 #{ftppwd_dir}
chgrp #{batch_id} #{ftppwd_dir}/*
chown #{batch_id} #{ftppwd_dir}/*
EOH
También hay una sintaxis heredoc más reciente para Ruby <<~END
que se parece más a lo que normalmente ver en la mayoría de las shells y otros idiomas con el ~
en lugar del -
para indicarle a Ruby que elimine los espacios en blanco iniciales para que coincidan con la línea menos sangrada del bloque.
https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc
Oh, me perdí esta. –
Symbolhound es una manera de buscar sintaxis que Google no puede manejar. –