check protoc exists

i'm not sure i understand the locking -- all you are synchronizing on is the assignment to the class var? in something like c++ this might be necessary to avoid a corrupted pointer, maybe, but in ruby it seems like a no-op.