Ответ 1
Прочитайте документацию File::basename
:
basename (имя_файла [, суффикс]) → base_name
Возвращает последний компонент имени файла, указанный в имени_файла, который может быть сформирован с использованием файлов File:: SEPARATOR и File:: ALT_SEPARETOR в качестве разделителя, когда File:: ALT_SEPARATOR не равен нулю. Если суффикс указан и присутствует в конце файла_файла, он удаляется.
file = "/home/usr/my_file.xml"
File.basename(file,File.extname(file)) # => "my_file"