James_E

James_E

Calling my own app's functions from `dev.exs`?

I have a mix app, and the following snippet in runtime.exs:

if config_env() == :prod do
  # ...
  phx_ip = case System.get_env("PHX_IP", "ANY") do
    "ANY" -> :any
    s -> case MyApp.Util.parse_ip(s) do
      {:ok, ip} -> ip
      {:error, error} -> :erlang.error(error)
    end
  end

However, when I try to port this snippet to dev.exs (we need to test the specific-IP handling code in dev), it won’t compile because MyApp.Util isn’t available.

How should I make a module of my code available to dev.exs?

Most Liked

seeplusplus

seeplusplus

This may be similar to this thread,

But based on some quick testing I’d say you don’t really want to do what you’re doing inside a dev.exs. It’s only run before compile (which is why you can’t read your modules’ functions) and is not run after you’ve built your release. In your case it looks like you’re reading an env var to determine which IPs to bind to, which is definitely something you’d want to do on each startup.

However, when I try to port this snippet to dev.exs (we need to test the specific-IP handling code in dev), it won’t compile because MyApp.Util isn’t available.

Could you just remove the if config_env() == :prod around your phx_ip code to test in dev?

garrison

garrison

This is not an answer to your question, but it’s perfectly fine to gate code by env in runtime.exs; this is in fact exactly what the if config_env() == :prod do line in your snippet does.

(You are probably aware of this, but I mention it just in case.)

hauleth

hauleth

You cannot use functions defined in your code in dev.exs as there you define compile-time config. So you will have chicken-egg problem if that would be possible.

Where Next?

Popular in Questions Top

pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
pgiesin
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database. Dep...
New
sacepums
Hey guys. I'm new to elixir and im really stocked about it. But I ran into a bit of problem - I need to convert a date sting, for examp...
New
makeitrein
Hey all, just started picking up Elixir last week and am writing a scraper as a learning project. Baby step #1 is extracting the number ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
gonzofish
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
hpopp
To simplify some tasks at work, I wrote and published this package yesterday. It’s a simple macro that enables Access behaviour on struct...
New
Mooodi
Given a string, how can I get access to its character by index? Enum.at("my_string", 2) doesn't work. Or rather, not char, but a substr...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Other popular topics Top

yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

We're in Beta

About us Mission Statement