Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Toying with a clean room implementation of the rubygems ‘install’ command. Focus is on naivety for portability, MacRuby for instance.

tree: 069afe97d5

Fetching latest commit…

Cannot retrieve the latest commit at this time



The aim of this project is, at first, to create a re-implementation of the RubyGems install command, which should be easier to get up and running on Ruby implementations such as MacRuby.

What's up with the ‘illegal character’ ?

If a character is not in the ASCII table, it doesn’t make it illegal or however people are calling them nowadays. That’s problem it was trying to draw attention to. I see people normalizing these types of characters in places where unicode is very very valid. Just because it looks like a `u' does not make it one…

But after multiple request it was decided to add an executable without a multibyte character; ugem.

If you are hardcore, you can get the `µ' character on OS X with: ⌥ + M (that’s the ALT key…)

Tell me more, more!

Mu (uppercase Μ, lowercase μ; Greek: Μι or Μυ [mi]) is the 12th letter of the Greek alphabet. In Unicode, the upper and lower case mu are encoded at U+039C and U+03BC respectively. In ISO 8859-7 they are encoded at CCHEX and ECHEX. The micro sign or micron is considered a distinct character from the Greek alphabet letter by Unicode for historical reasons (although it is a homoglyph)

Because µ is the abbreviation for the Metric System prefix micro-, the symbol is used in many word plays about the field of micro-computing.

So to recap, it’s ‘micro’ in MicroGem, got it?


On Ruby with working RubyGems

$ sudo gem install alloy-microgem -s

On Ruby without working RubyGems (eg MacRuby)

Get source:

$ git clone git://
$ cd microgem

Install the remote gem:

$ sudo env PRODUCTION=true macruby ./bin/µgem install alloy-microgem --simple --debug

µgem banner

Microgem is an unsophisticated package manager for Ruby.
And the first commandline utility to start with a multibyte character; µ

        µgem [command] [arguments…] [options…]

        µgem install rake
        µgem install rails --force
        µgem cache update --debug

        --debug                      Raises the log level to `debug'
        --force                      Forces a command
        --simple-downloader          Use curl to download files instead of Net::HTTP
        --simple-unpacker            Use external tools to unpack archives instead of Zlib
        --simple                     Enables --simple-downloader and --simple-unpacker
        --help                       Show help information

Getting started

Get the source:

$ git clone git://

Install a gem:

$ ./bin/µgem install rake

Note that unless you set the PRODUCTION environment variable everything is installed in ./tmp.

The current default sources are rubyforge and github.


There are a lot of limitations currently compared to RubyGems. The most important ones are:

  • Does not install C extensions yet.


The way it's being developed is in a test and RubyGems data driven manner. We are using the `quick' marshalled specs, so we use those fixtures to run the tests.

If you encounter an invalid gemspec, RubyGems will warn you about it, then please add it to test/regression/gemspecs and send me a pull request.


  • Install gems.

  • Small.

  • Test driven.

  • Clean room design.

  • Naive, no more code than necessary should be written. (YAGNI)

Something went wrong with that request. Please try again.