Confirguração em arquivo externo YAML, simples e rápido no RubyOnRails

September 12th, 2006 at 9:43 pm (Programação, Ruby, RubyOnRails)

Fiz hoje a tarde esse simples código para eu nunca mais precisar colocar configuação hardcoded (dentro do código), e sim em um arquivo externo como este que no rails eu adicionei em config/site.yml:

admin_email: admin@mysite.com
url: http://www.mysite.com
site:
--title: My Site
--description:
--keywords:

Atenção os — são 2 espaços, yaml exige que você use espaços invês de tabs, configure seu editor para usar 2 espaços como tab, inflizmente o wordpress não mantém os espaços corretamente, será que o typo faria isso?

No final do config/environment.rb, ou a inicialização de qualquer programa em ruby, coloque as seguintes linhas:

config = YAML::load(File.open("#{RAILS_ROOT}/config/site.yml"))
config.each { |key, value| eval "$#{key.upcase} = #{value.inspect}" }

Elas leem o arquivo e definem as variáveis globais, neste caso você teria as seguintes variáveis globais:
$ADMIN_EMAIL, $URL e $SITE, sendo a última um hash, com por exemplo $SITE[’title’].

Qualquer dúvida ou problema podem comentar.
Atualizado em 03/2007.