Rotation and Scaling are inexorably linked in a transformation - hence the weirdness...
Can I suggest another approach...
You are trying to align two objects they both have obj.transformation.axes and you can transform in steps...
Therefore you can move the objects together using
[ tm=Geom::Transformation.translation(vector_from_point_to_point)]
and then rotate one to align with
[ tr=Geom::Transformation.rotation(point, axis, angle)]
t=tm*tr
and then use
obj.transform!(t)
in one step... but note that the 'order' is important in a matrix * and the order of the transformations it will do is always taken as right-to-left... i.e. the move then the rotation - unlike normal numerical multiplication it's not commutative for matrices! Moving and then rotating will not necessarily give the same result as rotating and then moving - depending on the relativity of points etc...
PS: Put your code inside a [ code ]...[ /code ] block as it's easier to read.
You are using a $ variable - dangerous as it's exposed to all other tools and such a common name may well clash with other authors' unwrapped code too... Use @ or @@ variables that span methods within your own module/class only...
Parenthesize your arguments as method(1, 2, 3) rather than method 1, 2, 3 - although both work upcoming versions of Ruby may well deprecate unparenthesized arguments and even the most recent update caused some problems - I know th API guidance and many example scripts do it the 'wrong way' but it's a good habit to get now, before your code gets out of date unnecessarily...