I thought that the allure of using truffle lies in the ability to upgrade a contract that is live and already has state. I now realize that the only way to maintain state while "upgrading" a contract is with the method shown here . What is the purpose of using truffle deploy
in a development scenario where my contract may already have state and don't want to deploy an entirely new contract and lose that state?
2 Answers
Truffle will not help you to upgrade your contract instances in the sense that you can keep the storage and add new functionalities. It will "only" help you with the deployment process. It can remember at which step your deployment process is and it can continue on that point with your deployment (migration) scripts.
Truffle works well for development of contracts, ie when you are adding new features to a contract and need to deploy new versions and run tests.
It works if you want to deploy contracts to production but is not the best there. And it doesn't have much tools for maintenance of existing contracts, you will have to write your own scripts.