romenigld
(RuntimeError) environment variable WOLFRAM_APP_ID is missing
I’m reading the ebook Programming Phoenix 1.4 and in the page 268 when I try to execute the iex it complains for this:
** (RuntimeError) environment variable WOLFRAM_APP_ID is missing.
(stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:449: :erl_eval.expr/5
(stdlib) erl_eval.erl:126: :erl_eval.exprs/5
(elixir) lib/code.ex:240: Code.eval_string/3
(mix) lib/mix/config.ex:158: anonymous fn/2 in Mix.Config.__import__!/2
(elixir) lib/enum.ex:1948: Enum."-reduce/3-lists^foldl/2-0-"/3
(mix) lib/mix/config.ex:157: Mix.Config.__import__!/2
So I add the API key in both config/dev.exs and config/prod.secret.exs files:
wolfram_app_id =
System.get_env("XXXXXX-XXXXXXXXXX") ||
raise """
environment variable WOLFRAM_APP_ID is missing.
"""
config :info_sys, :wolfram, app_id: wolfram_app_id
I created the key XXXXXX-XXXXXXXXXX in the http://developer.wolframalpha.com/portal/myapps/index.html
with the Application name: rumbl
and then generated the AppID: XXXXXX-XXXXXXXXXX
What I’m doing incorrect?
the value of the WOLFRAM_APP_ID I put just on the config/prod.secret.exs file?
like WOLFRAM_APP_ID= "XXXXXX-XXXXXXXXXX"
and then keep on the config/dev.exs file the code: System.get_env("WOLFRAM_APP_ID") || ?
Marked As Solved
NobbZ
As I said, I’d not hardcode it there for several reasons, but use a .env or .envrc for the project (not comitted into source control) and source it before working with the project.
direnv is a nice tool for such setups. It will automatically “execute” .envrc files when entering a directory, if that directory is “trusted”.
Also Liked
romenigld
Just for help if someone stopped like me in this part of the book, I’ll share what I do for run correctly.
I create inside the config folder a .env file and then add:
export WOLFRAM_APP_ID="XXXXXX-XXXXXXXXXX"
then after I run on terminal:
source config/.env
And then I try iex -S mix:
iex(1)> InfoSys.compute("what is elixir?")
[
%Task{
owner: #PID<0.366.0>,
pid: #PID<0.368.0>,
ref: #Reference<0.625303463.500432897.47893>
}
]
and work’s.
Then I add in the .gitignore file:
# Ignore .env files
/.env
for not share by git the WOLFRAM_APP_ID.
Is that correct what I’m doing?
Thank’s for Help @Nobbz and @fun2src.
NobbZ
NobbZ
This will only ignore .env from the repositories root. If you want to exclude config/.env, then you have to do /config/.env, assuming that git-root and project root are the same.
Other than that, the flow seems to be correct, though I prefer to have .env(rc) files in the project root for discoverability.
Last Post!
DivingEagle
I forgot to mention that I first made this entry into config.exs and prod.secret.exs
wolfram_app_id =
System.get_env(“WOLFRAM_APP_ID”) ||
raise “”"
environment variable WOLFRAM_APP_ID is missing.
“”"
config :info_sys, :wolfram, app_id: “XXX-XXXX”
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









