Breaking up long strings on multiple lines in Ruby without stripping newlines
We recently decided at my job to a ruby style guide. One of the edicts is that no line should be wider than 80 characters. Since this is a Rails project, we often have strings that are a little bit longer - i.e. "User X wanted to send you a message about Thing Y" that doesn't always fit within the 80 character style limit.
I understand there are three ways to have a long string span multiple lines:
- HEREDOC
- %Q{}
- Actual string concatenation.
However, all of these cases end up taking more computation cycles, which seems silly. String concatenation obviously, but for HEREDOC
and %Q
I have to strip out the newlines, via something like .gsub(/\n$/, '')
.
Is there a pure syntax way to do this, that is equivalent to just having the whole string on one line? The goal being, obviously, to not spend any extra cycles just because I want my code to be slightly more readable. (Yes, I realize that you have to make that tradeoff a lot...but for string length, this just seems silly.)
Update: Backslashes aren't exactly what I want because you lose indentation, which really affects style/readability.
Example:
if foo
string = "this is a \
string that spans lines"
end
I find the above a bit hard to read.
EDIT: I added an answer below; three years later we now have the squiggly heredoc.
Solution 1:
Maybe this is what you're looking for?
string = "line #1"\
"line #2"\
"line #3"
p string # => "line #1line #2line #3"
Solution 2:
You can use \
to indicate that any line of Ruby continues on the next line. This works with strings too:
string = "this is a \
string that spans lines"
puts string.inspect
will output "this is a string that spans lines"