¿Qué significa “<< -" en Ruby?

Por ejemplo:

code = <<-EOH bundle install bundle exec unicorn -c /etc/unicorn.cfg -D EOH 

¿Qué hace este código? ¿Qué es <<- llamado?

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 aquí , por ejemplo.

A menudo usas heredocs para definir grandes fragmentos de código. Algunos editores lo saben y pueden resaltar la syntax allí (si especifica el idioma). Mira:

cadenas vs heredocs

Me parece como heredoc. El - permite que el delimitador final ignore el espacio en blanco antes de él.

Una simple búsqueda en Google me dio esto .

También hay una syntax de HEREDOC más nueva para Ruby < <~END que se parece más a lo que normalmente verías en la mayoría de las conchas y otros lenguajes con ~ lugar de - para decirle a Ruby que elimine los espacios en blanco iniciales para que coincidan con la línea menos sangrienta el bloque.

https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc

Puede pasar múltiples comandos en un bloque como este en Receta de Chef

  bash 'Install ftppwd' do code < <-EOH mkdir #{ftppwd_dir} chmod 775 #{ftppwd_dir} chgrp #{batch_id} #{ftppwd_dir}/* chown #{batch_id} #{ftppwd_dir}/* EOH