Another batch of RJack updates has been accumulating, but was blocked behind figuring out what has changed with Gemcutter and gem publishing to the canonical repo. Gemcutter appears to be good forward progress in modernizing gem distribution. While the blog posts and FAQ provide clues, it would help more if there was some canonical status page (not a twitter timeline) that provides a clear summary of the current state of accounts, publishing routes, and gem repo behavior. Somewhere I thought I read that mirroring of the old rubyforge project gem file hosting has stopped, and a look at rubyforge.org shows the last published gem recorded there was on 2009-12-10. So without risking an old style rubyforge release (Hoe’s :release task) with unknown results, I decided it was time to start using “gem push”.

The previous introduction of rjack-tarpit made the changes for rjack much simpler. I first released a new rjack-tarpit-1.1.0 which provides new “push” and “install” tasks as shown below:

# Define gem push and install tasks
def define_gem_tasks
  desc "gem push (gemcutter)"
  task :push => [ :gem ] do
    require 'rubygems'
    cm = Gem::CommandManager::instance
    cm.run( [ 'push', '-V', "pkg/#{name}-#{version}.gem" ] )
  end

  desc "gem install (default install dir)"
  task :install => [ :gem ] do
    require 'rubygems'
    cm = Gem::CommandManager::instance
    cm.run( [ 'install', '--no-ri', '-V', "pkg/#{name}-#{version}.gem" ] )
  end
end

(I hope CommandManager::run is a “supported” approach to running gem commands in process. This has a speed advantage under jruby by avoiding a separate interpreter start-up.)

Using the new gemcutter based :push task I was able to release all of these accumulated updates:

This eliminates one Hoe dependency, and with tarpit encapsulating these concerns, this change feels like a step in the direction of removing the Hoe dependency (and the quirky Manifest handling) all together. I like my implementation better than the recently released Hoe 2.4 Gemcutter plugin.