Better Gem Publishing with Gemcutter
If you’re working with Ruby and have been paying attention to Twitter or RSS feeds, then you’ve probably heard of Gemcutter. If not, it’s the latest flavour for publishing gems, and I’m finding the simplicity of it a delight.
If you’ve not clicked the link to Gemcutter yet, let’s run down how easy it is to get it set up on your machine.
sudo gem install gemcutter gem tumble
That’s it. Any future gem installs will look at Gemcutter’s growing library.
Firstly, get yourself an account, click that confirmation email link, then hunt down a gem you want to publish, and run the following command:
gem push my-awesome-gem-0.0.1.gem
If it’s your first time, you’ll be asked for your login details, and then the gem is online and ready for anyone to download it. No waiting, no forms, no pain.
When you’ve got a new version, just run that same command again, pointing to the new gem file:
gem push my-awesome-gem-0.1.0.gem
One command. No authentication prompts. Available for everyone straight away. Awesome.
If you’ve already got gems on RubyForge that you’d like to take ownership of on Gemcutter, it’s another one-step process:
gem migrate my-legacy-gem
You’ll be prompted for your RubyForge account name and password, and then Gemcutter does the rest.
Pretty easy, hey?
Over this past weekend, I made Gemcutter the definitive source for all of my gems:
- Thinking Sphinx
- Thinking Sphinx for Sphinx 0.9.9
- Thinking Sphinx/Raspell plugin
- Fakeweb Matcher
There’s been some discussion about whether Gemcutter should replace the gem hosting facilities provided by Rubyforge. This may or may not happen, but it is confirmed that Gemcutter will be moving to rubygems.org soon.
Everything will still work fine via the gemcutter.org address, though, so don’t let that hold you back from diving in head first.
The talented Nick Quaranto has been working hard on this for a while, and it’s great to see the Ruby community embrace Gemcutter so quickly. Here’s hoping it becomes the defacto gem source for all Ruby projects.