How about to hold an `Addressable` URI as an instance variable in `Resource` class, and `Resource#path` and `Resource#url` are generated by this variable. If we have two `Addressable` URIs, we can easily make relative links by `Addressable#route_to` or `Addressable#route_from`.

Because `Addressable`'s `route_xxx` methods expect their URIs to be absolute,  it may be needed to use dummy site names like `"http://localhost/"` if they were relative URIs. Furthermore, the redundant code for normalizing url that you pointed out would be gone.