Simple ruby extension to use libmagic instead of shelling out for file mime types.
C Ruby
Pull request Compare This branch is 2 commits ahead, 2 commits behind dsturnbull:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ext
spec
.gitignore
Gemfile
README
Rakefile
VERSION

README

|
|  ____,____, _,  _,____,____,_,  _,____,
| (-/  (-/  \(-|\ |(-|  (-|_,(-|\ |(-|
|  _\__,_\__/,_| \|,_|,  _|__,_| \|,_|,
| (    (     (     (    (    (     (
|               ____,_  _,____,____,
|              (-|  (-\_/(-|__|-|_,
|               _|,   _|, _|   _|__,
|              (     (   (    (
|
|       libmagic bindings by dsturnbull
+------------------------------------------

SYNOPSIS
     $ gem install content_type
     irb> require 'content_type'
     irb> File.content_type('file.pdf')             #=> "application/pdf"
     irb> File.open('file.doc').content_type        #=> "application/msword"
     irb> "hi".content_type                         #=> "text/plain"
     irb> ContentType.new('file.jpg').content_type  #=> "image/jpeg"

DESCRIPTION
     ContentType is a simple C extension that binds to libmagic in order to
     efficiently detect mime types of files.

     Using the should_be_faster rspec extension,
       ext.should be_at_least(5).times.faster_than(shell)

     In addition to being fast, it is far more accurate than the current
     practice of casing a regexp on file extensions.

DIAGNOSTICS
     ContentType raises "ArgumentError: invalid file" for all errors relating to
     the file it's working on.

     ContentType raises "RuntimeError: open", "RuntimeError: load" and
     "RuntimeError: file" for libmagic errors.

     Any file that cannot be identified is simply said to be "data".

AVAILABILITY
     http://github.com/dsturnbull/content_type