in der Ursache des Schreibens einer Rails 4 app Ich habe mich in letzter Zeit gefragt, wo und wie genau benutzerdefinierte Konfigurationsinformationen gespeichert werden? Genauer gesagt meine ich Dinge wie App-Titel, spezielle E-Mail-Adressen, vielleicht Theming-Optionen usw., die ich in meiner ganzen App mit entweder Umgebungsvariablen oder anderen Konstrukte beziehen möchte. Ich habe um ein wenig zu graben und - vor Bereitstellung - endete mit einem raffinierten initializer eine OpenStruct wie diesWie speichern und greifen Sie auf globale App-Konfigurationseinstellungen zu?
require 'ostruct'
all_config = YAML.load_file("#{Rails.root}/config/app_config.yml") || {}
env_config = all_config[Rails.env] || {}
AppConfig = OpenStruct.new(env_config)
zu schaffen, das die folgenden yaml-Datei liest (app_config.yml)
default: &default
general:
app_title: MyName
maintainer_email_address: [email protected]
development:
<<: *default
test:
<<: *default
production:
<<: *default
Innerhalb der Entwicklung war ich total glücklich Zugriff auf alles, was ich über AppConfig.general.*
zugreifen musste, aber das funktioniert leider nicht in der Produktion, versucht einen Server/Konsole zu starten, um einen Uninitialized constant AppConfig
-Fehler zu erhöhen.
Jetzt habe ich zwei bis drei Fragen:
1) Kann ich davon ausgehen, dass dies nicht in der Produktion an die Last-Reihenfolge der Dateien durch nicht funktioniert, wo production.rb
vor die initializer geladen wird (-> AppConfig da eine globale Variable nicht vorhanden ist)
2) Wenn ja: Warum funktioniert das in der Entwicklung? Was ist anders dort?
3) Was ist eine gute Praxis, um Informationen wie die oben genannten zu speichern? Mein Wunsch ist es, Informationen wie diese komfortabel über eine Art Benutzer-/Admin-Oberfläche zu bekommen und einzustellen. Von dort will ich nicht mit meiner Umgebung-Datei zu schwer ...
Allright, ich hoffe jemand kann mir da draußen helfen, danke im voraus! Andi
http://stackoverflow.com/questions/2127960/ruby-on-rails-storing-application-configuration/40306232#40306232 – prograils
Danke für den Hinweis. Leider beantwortet es nicht die Fragen 1 und 2. Haben Sie eine Ahnung davon? –