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.