Wie Einstellungen aus Adminberei ch für ganze Anwendung speichern?

Hallo zusammen!

Bei einer immer weiter gewachsenen Anwendung von mir ist es mittlerweile
sinnvoll, dass es einen Admin-Bereich gibt, in dem man einige
Einstellungen machen kann. Sowas wie: Welches Header-Bild soll heute
verwendet werden, welche Liste von IDs von Beiträgen soll in einer
“featured”-Liste auf der Frontpage auftauchen und so weiter…

Bisher habe ich solche Einstellungen im Code gemacht und dann immer ein
Update committed. Damit aber auch andere die Einstellungen schnell und
ohne Programmieraufwand machen können, suche ich nach einer anderen Lösung.

Jetzt frage ich mich: Wenn ich solche Daten speichern will, wie mache
ich das sinnvoll?
Ein Model anlegen? Ist eigentlich ja etwas übertrieben?
Eine Config-Datei anlegen? Wird das kompliziert mit Lesen und Schreiben?
Oder irgendwie ganz anders?

Hat da irgendwer Erfahrungen oder einen Tipp?

Dank und
Grüße,
Thomas V…

Hatte mal hiermit [1] was gemacht. Vielleicht tuts das wie du es gerne
hättest.

[1] http://github.com/cmaggard/configatron-rails/tree/master

HTH

Thomas V. schrieb:

Danke für den Tipp. Ist aber leider nicht das, was ich gesucht hab.

Hab mich jetzt für die Lösung entschieden, die Daten in einer eigenen
Datei config.yml abzulegen.
Damit kann ich meine eigene Frage jetzt beantworten:

Laden der Config-Daten in application.rb:

before_filter :configure_app

def configure_app
# read config-file
if File.exists?("#{RAILS_ROOT}/config/app/config.yml")
file = File.open("#{RAILS_ROOT}/config/app/config.yml")
yaml = YAML::load(file)
file.close
end

# set default values
yaml = {} if yaml.nil? || yaml==false
yaml['header'] = {} if yaml['header'].nil?
yaml['header']['filename'] = 'header.png' if

yaml[‘header’][‘filename’].nil?

# global configuration for controllers and views
$CONFIG = yaml

end

Zugriff in den Views:
<%= $CONFIG[‘header’][‘filename’] %>

Falls man etwas speichern will, dann geht’s so:

def save_config
yaml = $CONFIG
yaml[‘header’][‘filename’] = ‘header2.png’

if File.exists?("#{RAILS_ROOT}/config/app/config.yml")
  file = File.open("#{RAILS_ROOT}/config/app/config.yml", 'w')
else
  if !File.exists?("#{RAILS_ROOT}/config/app")
    Dir.mkdir("#{RAILS_ROOT}/config/app")
  end
  file = File.new("#{RAILS_ROOT}/config/app/config.yml", 'w')
end
YAML::dump(yaml, file)
file.close

end

Weiß nicht, ob’s nochmal wen beschäftigt, wollte aber nicht auf der
Lösung sitzen bleiben, wo ich die Frage gestellt hatte…

Grüße,
Thomas V…

Daniel W. schrieb: