loaded = catch :loaded_stuff do
  begin
    require 'rake'
  rescue LoadError
    begin
      require 'rubygems'
      require_gem 'rake'
    rescue Gem::LoadError
      throw :loaded_stuff, false
    end 
  end
end

puts loaded

loaded = catch :loaded_stuff do
  begin
    require 'foo'
  rescue LoadError
    begin
      require 'rubygems'
      require_gem 'foo'
    rescue Gem::LoadError
      throw :loaded_stuff, false
    end 
  end
end

puts loaded