Skip to content
jvignolles edited this page Nov 27, 2014 · 1 revision

Figaro: one file to rule them all!

À chaque nouveau projet, c’est pénible de devoir repasser dans les seeds, les environnements, changer les clés dans les initializers, les fichiers yaml… alors tout a été centralisé sur PushUpRails.

Toutes les données spécifiques sont stockées dans config/application.yml. La gem figaro [1] s’occupe de la logique :

  • elle permet d’accéder aux données d’une manière plus agréable : Figaro.env.email vs. ENV['email']
  • elle assure que ces données soient utilisables par les initializers et même les autres fichiers yaml
  • le fichier yaml permet de gérer ses différents environnements

Il existe deux courants de pensée :

  • ne pas versionner application.yml (c’est notre cas)
  • le versionner avec uniquement des données de dév

Pour l’utilisation d’une donnée non critique, il est recommandé d’utiliser 'try' (ce qui évite une erreur si la donnée est à nil) :

if Figaro.env.try(:google_analytics_key)

Je recommande d’utiliser la syntaxe ENV['…'], il y a trop d’endroits où ça pète sinon.

Ne pas oublier qu’ENV est un hash de strings exclusivement. Ne vous attendez pas à avoir des integers ou des booleans. Depuis la version 1.0.0, mettre autre chose que des strings génère une erreur.

J’ai d’ailleurs ajouté config/initializers/_to_bool.rb pour gérer les booléens, exemple d’utilisation :

CarrierWave.configure do |config|
  if ENV["s3_enabled"].to_bool
    config.fog_directory  = ENV["aws_directory"]
    config.fog_credentials = {} # TODO
  else
    config.permissions = 0666
    config.storage = :file
  end
end
Clone this wiki locally