Muszę utworzyć jedną opcję konfiguracji dla mojej aplikacji Railsowej. Może być taki sam dla wszystkich środowisk. Odkryłem, że jeśli to ustawię environment.rb
, jest dostępne w moich widokach, a dokładnie tego chcę ...
environment.rb
AUDIOCAST_URI_FORMAT = http://blablalba/blabbitybla/yadda
Działa świetnie.
Jednak jestem trochę niespokojny. Czy to dobry sposób na zrobienie tego? Czy jest sposób, który jest bardziej modny?
YAML::ENGINE.yamler = 'syck'
tego do pracy stackoverflow.com/a/6140900/414220RAILS_ENV
zRails.env
iRAILS_ROOT
zRails.root
.Rails.application.config.whatever_you_want = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
Wersja kodu inicjalizatora Rails 3 jest następująca (RAILS_ROOT i RAILS_ENV są przestarzałe)
APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
Ponadto Ruby 1.9.3 używa Psych, który rozróżnia wielkość liter w klawiszach łączenia, więc musisz zmienić plik konfiguracyjny, aby to uwzględnić, np.
źródło
"#{Rails.root.to_s}"
;"#{Rails.root}"
Pracuje.Rails.root.join('config', 'config.yml')
zamiast"#{Rails.root.to_s}/config/config.yml"
AppName::Application.config.custom
Szyny> = 4.2
Po prostu utwórz
YAML
plik wconfig/
katalogu, na przykład:config/neo4j.yml
.Treść
neo4j.yml
może być podobna do poniższej (dla uproszczenia użyłem domyślnego dla wszystkich środowisk):w
config/application.rb
:Teraz Twoja niestandardowa konfiguracja jest dostępna jak poniżej:
Więcej informacji
Oficjalny dokument API Railsów opisuje
config_for
metodę jako:Jeśli nie chcesz używać
yaml
plikuJak mówi oficjalny przewodnik Rails:
Przykład
Oficjalne odniesienie do
config_for
metody | Oficjalny przewodnik po Railsachźródło
Krok 1: Utwórz config / initializers / appconfig.rb
Krok 2: Utwórz config / config.yml
Krok 3: pobierz stałe w dowolnym miejscu kodu
źródło
Chciałem tylko zaktualizować to, aby uzyskać najnowsze fajne rzeczy w Railsach 4.2 i 5, możesz teraz zrobić to w dowolnym ze swoich
config/**/*.rb
plików:(i to jest tam dosłowne
x
, tj.config.x.
dosłownie musi być to, a potem możesz dodać cokolwiek chcesz pox
)... i będzie to dostępne w Twojej aplikacji jako:
Zobacz więcej tutaj: http://guides.rubyonrails.org/configuring.html#custom-configuration
źródło
x
.You can configure your own code through the Rails configuration object with custom configuration under either the config.x namespace, or config directly. The key difference between these two is that you should be using config.x if you are defining nested configuration (ex: config.x.nested.nested.hi), and just config for single level configuration (ex: config.hello).
Źródło: guide.rubyonrails.org/configuring.html#custom-configurationKilka dodatkowych informacji na ten temat:
„.with_indifferent_access” umożliwia dostęp do wartości w skrócie za pomocą klucza ciągu lub równoważnego klucza symbolu.
na przykład.
APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda'
APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda'
Czysto dla wygody, ale wolę, aby moje klucze były przedstawiane jako symbole.
źródło
Używam czegoś podobnego do Johna dla Rails 3.0 / 3.1, ale najpierw Erb parsuje plik:
To pozwala mi użyć ERB w mojej konfiguracji, jeśli zajdzie taka potrzeba, na przykład odczytanie adresu URL redistogo heroku:
źródło
Rails 4
Aby utworzyć niestandardową konfigurację yaml i załadować ją (i udostępnić w aplikacji) w podobny sposób
database_configuration
.Utwórz swój
*.yml
, w moim przypadku potrzebowałem pliku konfiguracyjnego redis.config/redis.yml
Następnie załaduj konfigurację
config/application.rb
Uzyskaj dostęp do wartości:
Rails.configuration.redis_configuration[Rails.env]
podobnie jak możesz mieć dostęp do swojegodatabase.yml
przezRails.configuration.database_configuration[Rails.env]
źródło
Rails.configuration.redis_configuration = YAML.load_file("#{Rails.root}/config/redis.yml")[Rails.env]
. Jednak w przypadku railsów 4.2 i nowszych odpowiedź smathy jest prawdopodobnie prostszą drogą.Opierając się na eleganckim rozwiązaniu Omer Aslam, zdecydowałem się przekształcić klucze w symbole. Jedyna zmiana to:
Pozwala to na odwoływanie się do wartości za pomocą symboli jako kluczy, np
Wydaje mi się to ładniejsze dla moich oczu.
(Opublikowane jako odpowiedź, ponieważ moja reputacja nie jest wystarczająco wysoka, aby skomentować odpowiedź Omera)
źródło
Lubię simpleconfig . Pozwala na konfigurację środowiska.
źródło
zobacz moją odpowiedź na pytanie Gdzie jest najlepsze miejsce do przechowywania parametrów aplikacji: baza danych, plik, kod ...?
Odmiana tego, co masz, polegająca na prostym odwołaniu się do innego pliku. Widzi, że environment.rb nie jest stale aktualizowany i nie ma w nim stosu rzeczy specyficznych dla aplikacji. Chociaż nie ma konkretnej odpowiedzi na twoje pytanie „czy to sposób Railsów?”, Być może będzie tam dyskusja na ten temat.
źródło
Wolę uzyskiwać dostęp do ustawień za pośrednictwem globalnego stosu aplikacji. Unikam nadmiaru zmiennych globalnych w zakresie lokalnym.
config / initializers / myconfig.rb
I uzyskaj do niego dostęp za pomocą.
źródło
Mój sposób na załadowanie ustawień przed inicjalizacją Railsów
Pozwala na użycie ustawień podczas inicjalizacji Railsów i skonfigurowanie ustawień dla każdego środowiska
Ustawienia można uzyskać na dwa sposoby: Settings [„email”] lub Settings.email
źródło
Mój najlepszy sposób na konfigurację niestandardową, z komunikatem o podniesieniu, gdy brakuje pliku setting.yml.
jest ładowany z niestandardowego inicjatora w config / initializers / custom_config.rb
Utwórz YAML w config / setting.yml
źródło