cjbottaro

cjbottaro OP

I have an umbrella project that has lots of Phoenix apps, background workers, etc. Releases work great for deployment when you only want to start certain applications, but what about local dev using mix?

Given an umbrella like:

umbrella
  apps
    foo
    foo_web
    foo_worker

I’d like say something like iex -S mix app.start foo and it not startup the foo_web and foo_worker apps.

I made my own custom mix task for this, but it requires compiling my app first, which is a bit wonky since most people I know just do mix deps.get; iex -S mix and let the compile happen implicitly. Also, would be better to use something built-in than something custom.

Thanks for the help!

First 4 of 4 Posts Switch mode

hauleth

hauleth

You can use:

$ mix run --no-start -e "{:ok, _} = Application.ensure_all_started(:foo)"

To start only one application. Just remember to add --no-halt if you run it outside of IEx.

shanesveller

shanesveller

I typically use mix cmd --app umbrella_child mix run or pushd/popd for that, together with Tmux splits/panes, which can optionally be automated with projects like tmuxinator, teamocil, or a recent entrant called dmux.

Our primary repository at work is a large umbrella where most development efforts target one web frontend plus data and batch processing, so around a quarter of the total repo footprint, and this model works well in that scenario.

cjbottaro

cjbottaro OP

Nice, thanks for the mix command!

We use tmuxinator also, but I’m not entirely happy with it, thanks for those alternatives, going to check them out.

How do you use pushd and popd, I’m not getting that part.

shanesveller

shanesveller

pushd and popd are named after pushing and popping a stack from traditional computer science, so it looks something like:

# stores your current working directory
pushd apps/umbrella_child
# one-off commands, this approach doesn't work as well for something that stays running
mix ecto.migrate
# restores your working directory as it was prior to the previous pushd command
popd
— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
rahultumpala
Hello, I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
juhalehtonen
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

We're in Beta

About us Mission Statement