Self-upgrade architecture?

Is there anything written up about how Discourse’s self upgrade function works? If not, any pointers at where to look in the code?

Is it a suitable model for other Rails apps to follow? If not, are there better patterns out there? I haven’t come across any.

Thanks for considering!

1 Like

It’s a self-contained Discourse plugin, and it lives at GitHub - discourse/docker_manager: plugin for use with discourse docker image. The magic happens mostly at https://github.com/discourse/docker_manager/blob/master/lib/docker_manager/upgrader.rb.

It’s very user friendly and makes sense for Discourse since we try to conceal the complexity of running a modern web app in production, making non-tech users able to update their instances when needed.

Also there are thousands of instances out there and we need to take steps in order to minimize the support burden. You should be familiar with open source projects with thousands of open issues. We don’t want that.

6 Likes