Mime-types 2.4.1 Released

mime-types version 2.4.1 has been released!

The mime-types library provides a library and registry for information
about
MIME content type definitions. It can be used to determine defined
filename
extensions for MIME types, or to use filename extensions to look up the
likely
MIME type definitions.

MIME content types are used in MIME-compliant communications, as in
e-mail or
HTTP traffic, to indicate the type of content which is transmitted. The
mime-types library provides the ability for detailed information about
MIME
entities (provided as an enumerable collection of MIME::Type objects) to
be
determined and used programmatically. There are many types defined by
RFCs and
vendors, so the list is long but by definition incomplete; don’t
hesitate to to
add additional type definitions (see Contributing.rdoc). The primary
sources
for MIME type definitions found in mime-types is the IANA collection of
registrations (see below for the link), RFCs, and W3C recommendations.

This is release 2.4.1 (2.4 was pulled), fixing a bug in observed use of
the
mime-types library where extensions were not previously sorted, such
that

MIME::Types.of('image.jpg').first.extensions.first

returned a value of +jpeg+ in mime-types 1, but +jpe+ in mime-types 2.
This was
introduced because extensions were sorted during assignment
(MIME::Type#extensions=). This behaviour has been reverted to protect
clients
that work as noted above. The preferred way to express this is the new
method:

MIME::Type.of('image.jpg').first.preferred_extension

??ukasz ??liwa created the
{friendly_mime}[GitHub - lukaszsliwa/friendly_mime: Show friendly description for the given mime type code] gem, which
offers
friendly descriptive names for MIME types. This functionality and
English-language data has been added to mime-types as
MIME::Type#friendly. To
make it easy for internationalization, MIME::Type#i18n_key has been
added,
which will return a key suitable for use with the
{I18n}[GitHub - ruby-i18n/i18n: Internationalization (i18n) library for Ruby] library.

As a reminder, mime-types 2.x is no longer compatible with Ruby 1.8 and
mime-types 1.x is only being maintained for security issues. No new MIME
types
or features will be added.

mime-types (previously called MIME::Types for Ruby) was originally based
on
MIME::Types for Perl by Mark Overmeer, copyright 2001 - 2009. It is
built to
conform to the MIME types of RFCs 2045 and 2231. It tracks the {IANA
Media
Types
registry}[Media Types]
with some types added by the users of mime-types.

Changes:

2.4 / 2014-10-07

  • Bugs:

  • API Changes:

    • Added MIME::Type#preferred_extension to return the preferred
      extension for
      the MIME type. This should be used in preference to the current
      mechanism
      used by many clients, type.extensions.first. This will
      allow the
      implementation to change over time.
    • Added MIME::Type#friendly based on the concept presented by ??ukasz
      ??liwa???s
      {friendly_mime}[GitHub - lukaszsliwa/friendly_mime: Show friendly description for the given mime type code] gem.
      The
      initial English data for this is pulled from +friendly_mime+.
    • Added MIME::Type#i18n_key and MIME::Type.i18n_key to represent and
      convert
      MIME content types as translation keys for the I18n library.
  • MIME Type Development Tools:

    • Adding documentation to conversion methods.
    • Adding some robustness to missing Nokogiri support.
    • Extending coverage to fully cover new code. Tests now cover all of
      mime-types.