face.outer_loop returns a Loop object. Loop object will return vertices in order and it will return EdgeUse objects in order.

If you have an Edge and want to figure out it's direction in relationship with a face you must use edge.reversed_in?(face).