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: