I value any contribution to mime-types you can provide: a bug report, a feature request, or code contributions.
As mime-types is a mature codebase, there are a few guidelines:
Code changes will not be accepted without tests. The test suite is written with Minitest.
Match my coding style.
Use a thoughtfully-named topic branch that contains your change. Rebase your commits into logical chunks as necessary.
Do not change the version number; when your patch is accepted and a release is made, the version will be updated at that point.
Submit a GitHub pull request with your changes.
New or changed behaviours require new or updated documentation.
The mime-types registry is loaded from a JSON file in data, but this file is not considered editable and cannot be compared in a pull request. New or modified MIME types should be edited in the appropriate YAML file under type-lists. The format is as shown below for the application/xml MIME type in type-lists/application.yml.
- !ruby/object:MIME::Type content-type: application/xml encoding: 8bit extensions: - xml - xsl references: - IANA - RFC3023 xrefs: !ruby/hash:MIME::Types::Container rfc: - rfc3023 registered: true
There are other fields that can be added, matching the fields discussed in the documentation for MIME::Type. Pull requests for MIME types should just contain the changes to the YAML files for the new or modified MIME types; I will convert the YAML files to JSON prior to a new release. I would rather not have to verify that the JSON matches the YAML changes, which is why it is not necessary to convert for the pull request.
If you are making a change for a private fork, use rake convert:yaml:json to convert the YAML to JSON.
mime-types uses Ryan Davis’s Hoe to manage the release process, and it adds a number of rake tasks. You will mostly be interested in:
$ rake
which runs the tests the same way that:
$ rake test $ rake travis
will do.
To assist with the installation of the development dependencies for mime-types, I have provided the simplest possible Gemfile pointing to the (generated) mime-types.gemspec file. This will permit you to do:
$ bundle install
to get the development dependencies. If you aleady have hoe installed, you can accomplish the same thing with:
$ rake newb
This task will install any missing dependencies, run the tests/specs, and generate the RDoc.
Here’s the most direct way to get your work merged into the project:
Fork the project.
Clone down your fork (git clone git://github.com/<username>/mime-types.git).
Create a topic branch to contain your change (git checkout -b my_awesome_feature).
Hack away, add tests. Not necessarily in that order.
Make sure everything still passes by running rake.
If necessary, rebase your commits into logical chunks, without errors.
Push the branch up (git push origin my_awesome_feature).
Create a pull request against halostatue/mime-types and describe what your change does and the why you think it should be merged.
Austin Ziegler created mime-types.
Thanks to everyone else who has contributed to mime-types:
Andre Pankratz
Mauricio Linhares
Richard Hirner
Todd Carrico
Garret Alfert
Hans de Graaff
Henrik Hodne
Martin d’Allens
cgat
Greg Brockman
Generated with the Darkfish Rdoc Generator 2.