Rebar makes building Erlang releases easy. One of the advantages of using OTP releases is the ability to perform hot-code upgrades.
To do this you need to build a upgrade package that contains the built modules and instructions telling OTP how to upgrade your application. Those instructions come in the form of appup files and rebar can build them for you. The goal of the generate-appups command is to at the very least create a skeleton to get you started on a more complex appup, in simple cases the appup it creates will be usable without any edits. If an appup file already exists a new one will not be created. Once you have your appup files created you can build a upgrade package with the generate-upgrade command.
In the test/upgrade_project directory of the rebar repo you will find an example "dummy" release you can use as an example of how to run hot-code upgrades using rebar. The below instructions should apply closely to your release.
rebar compile rebar generate mv rel/dummy rel/dummy_0.1 rebar clean # start the release: cd rel/dummy_0.1 bin/dummy console erl> dummy_server:get_state(). erl> dummy_server:set_state(123). erl> dummy_server:get_state().
# Now, in another terminal we prepare an upgrade.. # change release version numbers from 0.1 to 0.2 in $EDITOR apps/dummy/src/dummy.app.src $EDITOR rel/reltool.config rebar compile rebar generate rebar generate-appups previous_release=dummy_0.1 rebar generate-upgrade previous_release=dummy_0.1 # Examine contents of upgrade package if you wish: tar -zvtf rel/dummy_0.2.tar.gz
mv rel/dummy_0.2.tar.gz rel/dummy_0.1/releases/ # Now use release_handler in the running erlang console for the deploy: erl> release_handler:unpack_release("dummy_0.2"). erl> release_handler:install_release("0.2"). erl> release_handler:make_permanent("0.2"). erl> release_handler:which_releases(). erl> dummy_server:get_state().
Last edited by joewilliams,