Cache the handle to the configuration and the instances since parsing the Rubber config on every access is rather costly.

Using the following benchmark (simple config value read, 100,000 times):

require 'benchmark'

Benchmark.bm do |x|
  x.report("hash") { 100_000.times { Rubber.config['screenshot_bucket'] } }
  x.report("method") { 100_000.times { Rubber.config.screenshot_bucket } }
end

Before:

       user     system      total        real
hash   22.240000   0.070000  22.310000 ( 22.265000)
method 23.200000   0.080000  23.280000 ( 22.954000)

After:

       user     system      total        real
hash    7.300000   0.010000   7.310000 (  7.304000)
method  7.270000   0.000000   7.270000 (  7.276000)