2009-11-26 24 views
5

Jeśli mam stałą w moim Rails environment.rb, na przykład ...Jak korzystać ze zmiennej środowiskowej Rails w skrypcie wdrożenia Capistrano?

SOME_CONSTANT = 3 

Czy to możliwe, aby uzyskać dostęp do tego w moim Capistrano deploy.rb jakoś? Wydaje się to proste, ale nie wiem, jak to zrobić.

+0

Trzeba będzie załadować środowisko Railsowe (przez wymagające environment.rb), jak przypuszczam. Co dokładnie próbujesz osiągnąć tutaj? –

+0

gdzie jest zdefiniowana ta stała? jaki plik? czy jest to klasa lub moduł? – nicholaides

Odpowiedz

3

ta zakończyła się praca:

utworzony plik config/initializers/my_constant.rb

położyłem stałej tam (szyny automatycznie ładuje pliki tam więc mogę użyć stałej w moim app)

potem wdrożenia. rb dodał load 'config/initializers/my_constant', więc można go tam również użyć.

+0

Jaką różnicę stanowi zdefiniowanie stałej za pośrednictwem ENV lub samego pliku 'config.rb'? – jjmerelo

1

Dlaczego nie zdefiniować tych stałych w pliku w lib /, a następnie wymagać pliku w obu aplikacjach Rails i Capfile?

2

Powinieneś uzyskać do niego dostęp za pomocą skrótu ENV [] (jest to rzecz Ruby), tutaj jest przykład wykorzystujący zmienną środowiskową TERM.

puts "Your Terminal is #{ENV['TERM']}"

Jeśli potrzebujesz rubin stałą, ze środowiska szynach, należy go ładować:

require 'config/environment'

Pamiętaj, że to będzie ładować całe środowisko aplikacji, należy myśleć w użyciu coś w rodzaju AppConfig lub SimpleConfig (wstaw tutaj inne narzędzie) do przechowywania konfiguracji, a następnie wystarczy załadować narzędzie, które przetwarza pliki konfiguracyjne.

0

Ponieważ wartość jest używana nie tylko przez aplikację szyny, prawdopodobnie przechowywałbym takie informacje konfiguracyjne w formacie agnostycznym języka (yaml, json, ini, xml), który może być łatwo analizowany przez różne narzędzia bez obawy o możliwą stronę ruchomości.

Powiązane problemy