Question about current/ symlink

Hey, I’m curious as to what the design decision was to the current/ symlink; what makes it necessary? I’m also curious as to why the symlink uses an absolute rather than a relative path. I changed it to a relative path, and seems to work fine. I was trying to dockerize a ghost image, and the absolute path was giving me issues, whereas the relative does not. What is the reasoning behind these design decisions? I am trying to learn. Thank you.

It minimizes downtime during upgrades and allows for rollbacks to occur. When upgrading, Ghost-CLI will install the latest version of Ghost into a new version folder and only once that has completed will it update the the current/ symlink, it also keeps the last 5 installed versions ready to roll back to if needed.

Another benefit is that it allows you to see which version is currently being used, both for adminstrators viewing the directory and for any code that is interacting with your Ghost install. The alternative would be for the currently used version to be hidden somewhere in a config file and for any code wanting to interact with the currently running version to know where to find and how to read that config file. If for example you wanted to serve some core assets directly via nginx the current/ symlink allows you to configure that without having to update the configuration every time an upgrade or rollback occurs.

2 Likes