0

Ich möchte ein XML-Dokument einmal analysieren - beim Start der Rails-Anwendung. Es wird an ein Objekt geparst, und ich möchte, dass dieses Objekt von jeder beliebigen Benutzersitzung aus erreichbar ist. Wie implementieren Sie dieses Objekt auf Anwendungsebene richtig?Rails - Wie mache ich ein globales Objekt

+1

möglich Duplikat [Ruby on Rails: Wo globale Konstanten definieren] (http://stackoverflow.com/questions/4110866/ruby-on-rails-where-to-define-global-constants) –

+0

Kann sein, aber es sind kleine Konstanten definiert. Gilt dieser Ansatz für ein großes Objekt? – Paul

+0

Ich möchte MyApp :: Application.GLOBAL_OBJECT – Paul

Antwort

1

Wenn Sie nur Informationen aus dem XML benötigen und Sie können es als einfache Hashes/Arrays/Strings haben, und kein spezifisches Objekt ist notwendig, können Sie dafür Settingslogic verwenden - normalerweise dauert es Yaml-Datei und ist dann im gesamten zugänglich ganze Anwendung. Zum Beispiel definieren Sie eine Klasse:

# app/models/settings.rb 
class Settings < Settingslogic 
    source "#{Rails.root}/config/application.yml" 
    namespace Rails.env 
end 

# config/application.yml 
defaults: &defaults 
    global: 'Hello' 

development: 
    <<: *defaults 
    more: 
    data: [1, 2, 3] 

Und dann kann man es so überall verwenden:

> Settings.global 
=> "Hello" 
> Settings.more.data 
=> [1, 2, 3]