Working With Multiline Strings
I imagine most Rubyists are aware that Ruby has "heredocs," but do you really know all they can do? Let's find out.
A "here document" is a literal syntax for a multiline
String. In the most basic form, they look like this:
p <<END_HEREDOC This is a multiline, as is String! END_HEREDOC # >> "This is a\n multiline,\nas is String!\n"
<<NAMEsyntax introduces the heredoc, but it actually begins at the start of the following line. It continues until
NAMEoccurs again, at the beginning of a line. Note the trailing newline in the example above. All of the data between start and finish is packaged up into a
Stringand dropped in where the original
There are some important details in that description, namely that the
Stringbegins on the next line and that it's inserted where the heredoc was started. This means that the rest of the line where the heredoc is started can have normal Ruby code (though your editor may syntax highlight it badly):
p <<END_SQL.gsub(/\s+/, " ").strip SELECT * FROM users ORDER BY users.id DESC END_SQL # >> "SELECT * FROM users ORDER BY users.id DESC"