This blog is part of our Ruby 2.5 series.

Ruby 2.4

Let’s say that we have a string Projects::CategoriesController and we want to remove Controller . We can use chomp method.

irb > "Projects::CategoriesController" . chomp ( "Controller" ) => "Projects::Categories"

However if we want to remove Projects:: from the string then there is no corresponding method of chomp . We need to resort to sub.

irb > "Projects::CategoriesController" . sub ( /Projects::/ , '' ) => "CategoriesController"

Naotoshi Seo did not like using regular expression for such a simple task. He proposed that Ruby should have a method for taking care of such tasks.

Some of the names proposed were remove_prefix , deprefix , lchomp , remove_prefix and head_chomp .

Matz suggested the name delete_prefix and this method was born.

Ruby 2.5.0-preview1

irb > "Projects::CategoriesController" . delete_prefix ( "Projects::" ) => "CategoriesController"

Now in order to delete prefix we can use delete_prefix and to delete suffix we could use chomp . This did not feel right. So for symmetry delete_suffix was added.

irb > "Projects::CategoriesController" . delete_suffix ( "Controller" ) => "Projects::Categories"

Read up on this discussion to learn more about how elixir, go, python, and PHP deal with similar requirements.