Squish Those Strings
While reading some Rails code, I came across a deprecation warning:
ActiveSupport::Deprecation.warn(<<-MESSAGE.squish) `redirect_to :back` is deprecated and will be removed from Rails 5.1. Please use `redirect_back(fallback_location: fallback_location)` where `fallback_location` represents the location to use if the request has no HTTP referer information. MESSAGE
What caught my eye was the
squish method on the heredoc. It’s common to see methods after heredocs to clean up formatting, but
squish is a great method name.
squish removes all leading and trailing whitespace, then replaces all consecutive whitespace with a single space. One application has been cleaning up long string messages that use the line continuation operator. The community style guide says to only use line continuations for concatenating strings, but I think
squish is cleaner:
long_string = "a long string " \ "spanning " \ "three lines" # => "a long string spanning three lines" better_long_string = "a long string squished to a single line without extra spaces or backslashes".squish # => "a long string squished to a single line without extra spaces or backslashes"
An all-too-common caveat:
squish is an extenstion method from