В первоначальном вопросе говорилось: «Удалите все возможные знаки препинания в конце строки», но только в приведенном примере показано 5, «?», «.», «!», «,», «;». Предположительно другие знаки препинания, такие как «:», «» и т. д., должны быть включены во «все возможные знаки препинания», поэтому используйте класс символов: punct: как указано в kurumi:
str.sub!(/[[:punct:]]?$/,'')