Mime::Type
, по-видимому, не имеет методов для добавления расширений в существующий зарегистрированный обработчик.Что вы можете сделать, это преобразовать существующий обработчик в хеш, добавить собственное расширение, а затем заново зарегистрировать обработчик.Это выведет предупреждение, но оно будет работать:
text_plain = MIME::Types['text/plain'].first.to_hash
text_plain['Extensions'].push('tab')
MIME::Types.add(MIME::Type.from_hash(text_plain))
MIME::Types.type_for("tab").first.to_s # => 'text/plain'
Или, если вы хотите быть умным и сбивающим с толку и делать все это в одной строке:
MIME::Types.add(MIME::Type.from_hash(MIME::Types['text/plain'].first.to_hash.tap{ |text_plain| text_plain['Extensions'].push('tab') }))
MIME::Types.type_for("tab").first.to_s # => 'text/plain'
Если по какой-то причиневам нужно подавить предупреждающее сообщение, вы можете сделать это следующим образом (при условии, что вы запускаете код в системе linux-y):
orig_stdout = $stdout
$stdout = File.new('/dev/null', 'w')
# insert the code block from above
$stdout = orig_stdout