Removendo acentos / diacríticos da string enquanto preserva outros caracteres especiais (tentei mb_chars.normalize e iconv)

Existe um muitosimilar question já. Uma das soluções usa código como este:

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

O que faz maravilhas, até você notar que também remove espaços, pontos, traços e quem sabe o que mai

Não tenho muita certeza de como o primeiro código funciona, mas poderia ser feito para removers acentos? Ou, pelo menos, receber uma lista de caracteres para preservar? Meu conhecimento sobre regexps é pequeno, mas tentei (sem sucesso):

/[^\-x00-\x7F]/n # So it would leave the dash alone

Estou prestes a fazer algo assim:

string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
  (/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s

Atroz? Sim..

Eu também tentei:

iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"

Ajuda por favor

questionAnswers(3)

yourAnswerToTheQuestion