12-02-2010, 06:01 PM
(Modification du message : 13-02-2010, 08:30 PM par Sephi-Chan.)
Au boulot, les sites qu'on développait pour des clients avaient généralement une table "configuration_items" dans laquelle on stockait ce genre de chose. Cette table contenait les colonnes "domain", "key" et "value". Le domaine sert à établir des espaces de noms afin de ne pas confondre les per_page pour les utilisateurs et ceux des articles, par exemple.
Et on définissait une méthode statique d'accès rapide dans notre modèle :
Ainsi, quand une clé est manquante (pas bieeeen !!!), on lance une exception (que le front contrôleur gère pour rendre une vue explicative, bien entendu).
C'est facile à administrer (pour le client), facile à maintenir (pas besoin de toucher au code source), sûr (on lance une exception s'il manque quelque chose), rapide (une base est excessivement rapide quand elle recherche un élément précis et met en cache la requête). Bref, du code robuste et professionnel.
Après, c'est sûr que c'est pas adapté à tout : on ne peut pas stocker les informations de connexion à la base, par exemple. Pour ces dernières, Rails utilise un fichier YAML.
Sephi-Chan
Et on définissait une méthode statique d'accès rapide dans notre modèle :
class ConfigurationItem < ActiveRecord::Base
def self.get(domain, key)
value = find_first_by_domain_and_key(domain, key)
raise MissingConfigurationItemError if value.nil?
value
end
end
# Et dans le code :
players_per_universe = ConfigurationItem.get(:universe, :players_per_universe)
Ainsi, quand une clé est manquante (pas bieeeen !!!), on lance une exception (que le front contrôleur gère pour rendre une vue explicative, bien entendu).
C'est facile à administrer (pour le client), facile à maintenir (pas besoin de toucher au code source), sûr (on lance une exception s'il manque quelque chose), rapide (une base est excessivement rapide quand elle recherche un élément précis et met en cache la requête). Bref, du code robuste et professionnel.
Après, c'est sûr que c'est pas adapté à tout : on ne peut pas stocker les informations de connexion à la base, par exemple. Pour ces dernières, Rails utilise un fichier YAML.
Sephi-Chan