I am currently working through The Little Elixir & OTP Guidebook and to consolidate knowledge I have made a mix project that uses several spawned processes with a coordinator that writes the collected data to a JSON file when they have completed.
When I run the main function in an iex
session the file gets written but if I run the function using an .exs
file the JSON never gets written. Any suggestions?
2 Likes
Can you show the script? If you’re doing something async, the exs
file is going to terminate as soon as nothing blocks the main process. IEX however will hang around.
Is the gitgo thing flushing the file out before it returns? If not then it can be done ‘later’, and if the system ends before ‘later’ occurs then no file will be written. Have you tried Process.sleep
ing after your puts
call to test?
Right so your code spawns a bunch of stuff, but nothing waits around for that stuff to finish. https://github.com/ronanyeah/gitgit/blob/master/lib/gitgit.ex#L16
IEX never quits anyway, so eventually stuff finishes. exs
however will quit as soon as the main process returns, regardless of if other processes are doing things.
You should consider writing this as a proper mix application.
1 Like
Thanks! I’m actually in the middle of writing it using a GenServer, is that what you mean?