Exigindo gemas de rubi e falhando com uma exceção amigável

Os blocos begin-rescue do Ruby podem ser usados ​​para requerer gem (s) e falhar com uma exceção amigável no caso de estar ausente.

Testado com: Ruby 1.8.7 e 1.9.2

#!/usr/bin/env ruby

require 'rubygems'
# Load dependency Ruby gems
gem_req
= {'libvirt' => 'creating VM domain','nokogiri' => 'XML formatting'}
gem_req
.each do |g,u|
begin
require g
rescue Exception => e
puts
"This script requires #{g} gem."
puts
"The #{g} gem is used for #{u}"
puts
"Install all gems listed in the Gemfile"
exit 1
end
end

É útil dizer aos usuários por que uma gema específica é necessária no script.