To zachowanie bardzo mnie myli. Wygląda na to, że zawartość mojej ENV
lub moja konfiguracja jest gdzieś zbuforowana. Oto jak go odtworzyć:Zmienne środowiskowe są buforowane w konfiguracji Rails?
w świeżej aplikacji (używam Ruby 2.0.0 i Rails 4.2.1), edytować application.rb
:
$ cat config/application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module Myapp
class Application < Rails::Application
config.active_record.raise_in_transactional_callbacks = true
config.env_foo = ENV['FOO']
end
end
Element konfiguracji env_foo
jest teraz nil
:
$ unset FOO # make sure FOO is unset
$ rails console
Loading development environment (Rails 4.2.1)
2.0.0-p598 :001 > Rails.application.config.env_foo
=> nil
ustalić pewne zmienne środowiskowe i zobaczyć, co się dzieje:
$ export FOO=barbapapa
$ rails console
Loading development environment (Rails 4.2.1)
2.0.0-p598 :001 > Rails.application.config.env_foo
=> nil
2.0.0-p598 :002 > ENV['FOO']
=> "barbapapa"
Tak więc element pamięci podręcznej nadal jest nil
, ale zmieniono ENV
. Nawet jeśli zmienię środowisko do produkcji:
$ RAILS_ENV=production rails console
Loading production environment (Rails 4.2.1)
2.0.0-p598 :001 > Rails.application.config.env_foo
=> nil
Gdzie jest ta konfiguracja pamięci podręcznej i Jak zrobić to odzwierciedlać nową ENV
?
Uwaga: Wiem, że istnieją inne sposoby konfigurowania Railsów, ale używam Heroku, więc myślę, że korzystanie ze środowiska do konfiguracji jest zalecane.
odpowiadając na własne pytanie w tej samej chwili co pytanie? : D – lutfianasari
@lutfianasari Tak :) Wiem, że to wygląda zabawnie, ale tak naprawdę jest zachęcane. https://stackoverflow.com/help/self-answer –
ah, widzę ... Widziałem, że inni również odpowiadają na własne pytanie, ale w powyższej odpowiedzi powiedziałeś "ty" i to sprawiło, że pytałem: D przepraszam za moje bezużyteczne komentarz i podziękowania za link informacyjny :) – lutfianasari