2012-12-04 6 views
12

Mam lokalne środowisko programistyczne, które w dużym stopniu opiera się na zmiennych środowiskowych systemu (jest zgodne z modelem aplikacji Heroku 12-factor), a ja ustawiam je teraz za pomocą skryptu powłoki. Skrypt powłoki również ustawia piloty git i aktywuje środowisko virtualenv, a ja chciałbym, jeśli to możliwe, przenieść to wszystko do polecenia Fabric (lub serii poleceń), ponieważ używamy Fabric do wielu innych rzeczy i chciałbym wycofać skrypty powłoki.Jak ustawić zmienne środowiskowe za pomocą Fabric

Running local('export FOO=bar') nie działa:

$ fab set_default_env_vars 
Using fabfile '/home/hugo/Projects/test/fabfile.py' 
[localhost] local: export FOO=bar 

Done. 

$ echo $FOO 

$ 

Czy to możliwe - a jeśli tak, to w jaki sposób?

Odpowiedz

19

Można użyć fabric.context_managers.shell_env do export zmiennej do bash dla swojej skorupy i wszystkie podpowłok zrodził od niego - ale te zmienne nie będą utrzymywać się poza powłoki, które zostały zdefiniowane dla (więc nie można ustawić zmienne środowiskowe dla nadrzędna powłoka ze skryptu tkaniny, tak jak ma to twój przykład).

Ty może skonfigurować skrypt bash, że źródłem dla lokalnego środowiska, które jest identical to what you would add to ~/.profile in your production slug (w swoich kluczy, niekoniecznie jej wartości) i użyj fabric.context_managers.prefix pozyskać ten plik przed uruchomieniem lokalnych komend.