I do not like this because it will give wrong/unexpected results if the
file is already replaced in any way (via rename, unlink + link/copy).

Tempfile#unlink is bad, for the same reason, too.  In retrospect, it
would be better if :unlink were only a keyword for Tempfile#initialize.

More methods => bigger ruby executable => slower startup.
This is bloat by a thousand cuts.