@movitto the asymmetrical condition arises when the file/symlink exists, then FileUtils.ln_s will NOT run.  However, it WILL be deleted via FileUtils.rm_f in the ensure block.  So, if the link exists before this method is called, it will not exist after this method completes.  Is that the desired behavior?  If so, to make the code clearer and more symmetrical, I would delete the symlink and then re-create it via FileUtils.ln_s and it will be deleted in the ensure block.