Так что я думаю, что есть Mime :: Type и MIME :: Types, которые полностью отделены друг от друга. Обратите внимание, что это «MIME» против «MIME».
Например,
MIME::Types.type_for("foo.json")
возвращает
[#<MIME::Type:0x1038b3108 @system=nil, @encoding="8bit", @simplified="application/json", @sub_type="json", @registered=true, @url=["IANA", "RFC4627"], @docs=nil, @obsolete=nil, @extensions=["json"], @raw_sub_type="json", @media_type="application", @raw_media_type="application", @content_type="application/json">]
Пока,
Mime::Type.lookup_by_extension("json")
1012 * возвращается *
#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]>
Похоже, если вы хотите добавить тип, чтобы он возвращался при использовании type_for, вы можете использовать следующее:
>> t = MIME::Type.from_array('video/mp4', %w(m4v))
=> #<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">
>> MIME::Types.add(t)
Type video/mp4 already registered as a variant of video/mp4.
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">]
>> MIME::Types.type_for("example.m4v")
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">]
>>
Предупреждение при вызове add немного касается, поэтому вы, вероятно, должны выяснить, как добавить свое расширение к типу "video / mp4". Для получения дополнительной информации ознакомьтесь с документацией для MIME :: Типы и MIME :: Тип .