Deprecate strip_heredoc?

The new squiggly-heredoc syntax is available since Ruby 2.3, which does the same thing as “strip_heredoc” method. I was going to submit a documentation change to mention the new Ruby syntax, but now I’m doubting if there is any good use case for the method, except for backwards compatibility. Can it be deprecated?

https://bugs.ruby-lang.org/issues/9098

+1 for deprecating.

+1 too.

The squiggly-heredoc operator can’t be applied to an already existing string. That is the only case were you still need strip_heredoc, so unless we add a way to strip heredocs from an already existent string object to Ruby we can’t deprecated it.

See https://github.com/rails/rails/commit/89bcca59e91fa9da941de890012872e8288e77b0 for the reasoning and https://github.com/rails/rails/blob/6729cef7516207efa1980de65fb4e1c72b4376d1/railties/lib/rails/generators/actions.rb#L330 for one place where we don’t have an equivalent method.

The squiggly-heredoc operator can't be applied to an already existing string. That is the only case were you still need strip_heredoc, so unless we add a way to strip heredocs from an already existent string object to Ruby we can't deprecated it.

How about we rename it to something like `strip_indent`?

As you should no longer be using it on a heredoc, the current name isn’t a great fit.

And then we can deprecate the old name, with a suggestion to use <<~ if possible, or strip_indent if not.

+1 to what Matthew said

If we are switching the use case of the method to stripping indentation, I wonder if we should just call it outdent.

By default it could auto detect the indentation like it does now, but there were a couple of times I was processing strings with known indentation that I want to remove, but for some reason the auto detection wasn’t quite right.

Oops. Hit sent before completing the email.

Anyway, I was thinking it may be a good idea to take keyword arguments to precise control the amount of indentation/tab vs space, etc to override the auto-detection, in the rare cases where it is needed.

For example, when processing an indented markdown code block (triple backtick), it is a good idea to use the indentation level of the backtick instead of looking at the content. Some times there may be intentional indentation inside the code block that is meant to be part of the content (e.g. ASCII art and other kind of diagrams).