2017-09-05 93 views
6

Z powodzeniem stworzyłem dwie aplikacje Heroku: my-app-prod i my-app-test. Istnieją określone zmienne środowiskowe, które skonfigurowałem w ustawieniach aplikacji Heroku. Używam standardowych plików konfiguracyjnych w Phoenix: config.exs, test.exs, prod.exs, dev.exs.Ustawienie MIX_ENV w Heroku dla Phoenix Framework

Po skonfigurowaniu testu my-app-test w Heroku przy użyciu zmiennej aplikacji MIX_ENV = test, nadal ładuje zmienne z prod.exs.

Czy są jakieś dodatkowe czynności, których mi brakuje, aby moja aplikacja korzystała z pliku test.exs?

I przestrzegać wszystkich instrukcji tutaj: https://hexdocs.pm/phoenix/heroku.html

Kiedy uruchamiam git pchania, mogę sprawdzić to za pomocą prod.exs oparciu o następujące dane wyjściowe.

remote: Generated my_phoenix_app_name app 
 
remote: -----> Creating .profile.d with env vars 
 
remote: -----> Writing export for multi-buildpack support 
 
remote: -----> Executing post compile: pwd 
 
remote: /tmp/build_f5b9e6e5890fcb58b9689f433c554c6a 
 
remote: -----> Phoenix app detected 
 
remote: 
 
remote: -----> Loading configuration and environment 
 
remote:  Loading config... 
 
remote:  Detecting assets directory 
 
remote:  * package.json found in custom directory 
 
remote:  Will use phoenix configuration: 
 
remote:  * assets path . 
 
remote:  * mix tasks namespace phoenix 
 
remote:  Will use the following versions: 
 
remote:  * Node 5.3.0 
 
remote:  Will export the following config vars: 
 
remote: CLIENT_ID 
 
remote: DATABASE_URL 
 
remote: POOL_SIZE 
 
remote: SECRET_KEY_BASE 
 
remote: SHOPIFY_SECRET 
 
remote:  * MIX_ENV=prod

+0

Wygląda na to, że przechowują zmienne w czasie kompilacji. Czy korzystasz z aplikacji 'mix phoenix.server' lub używasz wersji destylarni? –

+0

Zaktualizowany post, dzięki. – sheldonkreger

Odpowiedz

1

Buildpack dla Elixir ustawia MIX_ENV na prodby default, więc nie potrzebujesz tego ustawienia w swoim pliku Procfile. Można go zmienić po prostu:

web: mix phoenix.server 

Na my-app-prod nie musisz nic robić. Na my-app-test wystarczy ustawić MIX_ENV na test. Możesz użyć linii poleceń:

Jeśli to nie pomoże, spróbuj ponownie wdrożyć aplikacje na Heroku.

0

W swojej Procfile gdzie jest napisane:

web: MIX_ENV=prod mix phoenix.server 

powinieneś być w stanie go zmienić na:

web: mix phoenix.server 

skoro są już ustalone MIX_ENV w zestaw aplikacji tings config vars powinieneś być w stanie zostawić tę część MIX_ENV off.

+0

Moje repo ma tylko jeden plik Procfile. Jak w ten sposób zarządzać wieloma środowiskami? – sheldonkreger

+0

@sheldonkreger Czy próbowałeś już pominąć część '' MIX_ENV = prod' pliku Procfile? ponieważ ty ustawiasz MIX_ENV w swojej konfiguracji heroku – ryanwinchester