Dieses Verhalten verwirrt mich wirklich. Es scheint, als wäre der Inhalt meiner ENV
oder meine Konfiguration irgendwo zwischengespeichert. Hier ist, wie es zu reproduzieren:Umgebungsvariablen zwischengespeichert in Rails config?
In einer frischen app (Ich bin mit Ruby 2.0.0 und Rails 4.2.1), bearbeiten 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
Das Konfigurationselement env_foo
ist jetzt 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
Set einige Umgebungsvariablen und sehen, was passiert:
$ 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"
Also der Cache-Artikel ist immer noch nil
aber ENV
hat sich geändert. Auch wenn ich Umgebung Produktion ändern:
$ RAILS_ENV=production rails console
Loading production environment (Rails 4.2.1)
2.0.0-p598 :001 > Rails.application.config.env_foo
=> nil
Wo ist diese Konfiguration gecached und wie kann ich es machen den neuen ENV
reflektieren?
Hinweis: Ich weiß, dass es andere Möglichkeiten gibt, Rails zu konfigurieren, aber ich verwende Heroku, daher denke ich, dass die Verwendung der Umgebung für die Konfiguration empfohlen wird.
Ihre eigene Frage in der gleichen Minute wie die Frage zu beantworten? : D – lutfianasari
@lutfianasari Ja :) Ich weiß, es sieht lustig aus, aber es ist tatsächlich ermutigt. https://stackoverflow.com/help/self-answer –
ah, ich sehe .. Ich sah andere auch ihre eigene Frage beantworten, aber Sie sagten "Sie" in der obigen Antwort und das brachte mich in Frage: D Entschuldigung für meine nutzlos Kommentar und danke für den Informationslink :) – lutfianasari