Application.start_phase looks like another option.
Docs are a little light but the Erlang docs go into greater detail.