apr
Hello,
I have an umbrella application with many children applications. I would like to run some code (the same code) if any or all those child applications are started (i.e. when running tests, when running iex -S mix at the umbrella level, etc.) What would be the best way to structure such code?
Thanks!
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #hex











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
entone
Maybe you can explain exactly what you are trying to accomplish.
Nerves does something like this with the Shoehorn application, it ALWAYS starts, so even if other applications crash, you always have something running.
I’m not exactly sure how it accomplishes this, but you could dig into the code. Shoehorn — shoehorn v0.9.3
But maybe there’s another way to accomplish what you need to do.
apr
Good idea, this could be an example of the XY problem. I am trying to store some DB rows in
:persistent_termand want to guarantee that the rows will be stored in:persistent_termbefore any of the applications start.And thanks for the link, will take a look!
entone
If it wasn’t an umbrella application, you could just use a supervision tree, and have your first process insert the data, but assuming you don’t want to refactor everything
Shoehorn might be exactly what you need.
At the same time, the idea of a global state being shared across all of your applications is kind of frightening.
What exactly is the use case?
axelson
Couldn’t you create a new application (that all of the other applications depend on), whose supervision tree contains a
GenServerthat inserts the rows in:persistent_term?dimitarvp
In addition to @axelson’s excellent suggestion, do also have a look at GenServer’s
handle_continue.gregvaughn
I have used the Module @on_load callback to ensure persistent terms are set up the first time the wrapper module is used. That allowed me to avoid any concerns about app startup processes.
apr
That’s an interesting approach, but I am not able to get it to work with modules that represent a schema. I keep getting the error:
__MODULE__.__schema__/1 is undefined (function not available). Do you know what might be causing it?gregvaughn
I suspect Ecto’s
schemamacro is setting an @on_load callback and yours overrides it. If you could find the right call, your callback could call Ecto’sapr
Thanks for the quick reply! Turns out I was not returning
:oklike I was supposed to from theon_loadfunction. Returning:oksolved the issue.This approach looks promising. I am going to play around with it and report back.
gregvaughn
Oh, good because I just grepped the ecto code and “on_load” does not appear, so my suspicion was all wrong
I think my first attempt forgot that
:oktoo, so I can relate. I hope it works out for you.