sexta-feira, 19 de julho de 2013

Rails: Carregando constantes automaticamente

Postado por DoctorRu (Will)

Em outro post, de nome bem sugestivo Definindo método Initialize no controller sem destruir o layout expliquei como criar variáveis no método initialize sem comprometer o layout utilizando before_filter, aqui apresento uma maneira alternativa e mais recomendada para definir préviamente as constantes que venham a ser utilizadas em um projeto.

Arquivos criados no diretório initializers são carregados com as as outras configurações do Rails quando seu projeto é acessado no servidor, um ótimo lugar para definição de constantes.

Crie um arquivo com o nome desejado (irei utilizar site.rb) dentro do diretório initializers do seu projeto, como: raiz do projeto/config/initializers/site.rb e inclua as seguintes linhas:
#encoding:UTF-8
module Site

  CONFIG = {
    header:   "http://rubydoit.blogspot.com",
    footer:   "11 5555-5555 / 11 5555-5556 - São Paulo - Brasil"
  }

end
Acima foi criado um hash de nome CONFIG e dentro dele foram atribuídos chaves e valores para utilização dentro do seu código, como teste vou acessar o console do rails em modo sandbox (recomendando para testes pois todas as alterações sofrem rollback quando saímos do console).

Lembrando que é necessário especificar o namespace utilizando :: entre o nome do módulo e o nome do hash!
$ rails c --sandbox
Loading development environment in sandbox (Rails 3.2.13)
Any modifications you make will be rolled back on exit

irb(main):001:0> cabecalho = Site::CONFIG[:header]
=> "http://rubydoit.blogspot.com"

irb(main):002:0> rodape = Site::CONFIG[:footer]
=> "11 5555-5555 / 11 5555-5556 - São Paulo - Brasil"

Observação: Lembre-se de carregar o console a partir do diretório raiz do seu projeto.

Este post foi escrito ao som de Ibrahim Ferrer - Guaguanco callejero

0 comentários :

Postar um comentário