uniformly repeated image on objects with different dimensions
Your problem isn't the material, it's the UV texture coordinates.
You may be better off with a different coordinate system, such as using Object coordinates and then changing the image mapping from Flat to Cube. You may have to further use a Vector Mapping node to scale the coordinates to make the tiles the right size overall. I recommend also creating an empty to use as the Object coordinates reference: If the material links to an object such as an empty (a single object to reference no matter what instanced the material), they will probably stay the same size relative to eachother. Just don't move the empty relative to those objects or the textures will move. If the objects will be moving in different directions, it's a no-go.
UVs may seem tedious, but are a hands-on concrete way to manage textures since they are attached directly to the mesh. To fix the UV: Scale the UV by the ratio of the surface over the image dimensions (i.e. if the image is square and the surface is a 1X2 rectangle, make the UV a 1X2 rectangle over the image). This may require extending the UV past the image bounds, or doing yet more math so that the tiles not only have the same aspect but also the same size.
Hope this helps :)