The "map" method on arrays is useful here, it'll generate an output array from an input one, e.g.

    def all(filters = {})
      allbyfolder(dc.vmFolder).map { |vm| MiniServer.new(vm[:vm], vm[:path]) }
    end