It was a namespace issue. The Accumulo Thrift code all exists in the root namespace, but Ruby has it's own Range
class that was not getting overridden. This problem exists up to Accumulo 1.5.0. To solve it, I went over to github, and grabbed the generated Thrift code from the 1.5.2 branch where all of the Thrift objects are placed in an Accumulo namespace. Now I can call Accumulo::Range.new
and it works like a charm. The update also added a namespace to the Python thrift code.
Accumulo 1.5.2 Ruby Thrift code is here: https://github.com/apache/accumulo/tree/1.5.2-SNAPSHOT/proxy/src/main/ruby
This is the commit that fixes everything: https://github.com/apache/accumulo/commit/27ee2367056e5ad0cb6175f91154cd13d49e2c95