Should work if you create a transformation like this:
Assuming the face is drawn on the ground plane (z = 0)
origin = edge.start.position
axis = origin.vector_to(edge.end.position)
trans = Geom::Transformation.new(origin, axis)
entities.transform_entities(trans, [face])
I haven’t tested this but it will hopefully get you on the right track!