-
2
OCT
2008Working 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"
The
<<NAME
syntax introduces the heredoc, but it actually begins at the start of the following line. It continues untilNAME
occurs 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 aString
and dropped in where the original<<NAME
designator appeared.There are some important details in that description, namely that the
String
begins 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"