[Ruby] Fix for FieldDescriptor.get(msg).

This fix is similar to the previous bug found in
Message.[]. The fix is the same: we need to handle
arrays and maps properly.

Fixes: https://github.com/protocolbuffers/protobuf/issues/8325
diff --git a/ruby/ext/google/protobuf_c/defs.c b/ruby/ext/google/protobuf_c/defs.c
index 6cf8174..10ded86 100644
--- a/ruby/ext/google/protobuf_c/defs.c
+++ b/ruby/ext/google/protobuf_c/defs.c
@@ -960,16 +960,14 @@
 static VALUE FieldDescriptor_get(VALUE _self, VALUE msg_rb) {
   FieldDescriptor* self = ruby_to_FieldDescriptor(_self);
   const upb_msgdef *m;
-  const upb_msgdef *msg = Message_Get(msg_rb, &m);
-  VALUE arena = Message_GetArena(msg_rb);
-  upb_msgval msgval;
+
+  Message_Get(msg_rb, &m);
 
   if (m != upb_fielddef_containingtype(self->fielddef)) {
     rb_raise(cTypeError, "get method called on wrong message type");
   }
 
-  msgval = upb_msg_get(msg, self->fielddef);
-  return Convert_UpbToRuby(msgval, TypeInfo_get(self->fielddef), arena);
+  return Message_getfield(msg_rb, self->fielddef);
 }
 
 /*