Truques de Ruby: DATA e __END__

Em Ruby, temos algumas CONSTANTES GLOBAIS que facilitam nossa vida. Nesse post, lhes apresento DATA e __END__.

Normalmente os arquivos de scripts em Ruby são finalizados com EOF, mas você pode indicar onde será o fim do script, adicionando a constante __END__ e com isso, todo bloco abaixo de __END__ não será processado pelo Ruby como comandos da linguagem. Então, podemos usar a constante DATA, que é uma instância de File do arquivo de script atual, porém considerando apenas o conteúdo que está abaixo da constante __END__. Vejamos alguns exemplos para entender melhor como funciona

require "yaml"
obj = YAML::load(DATA)

p obj

__END__
---
  -
    name: Adam
    age: 28
    admin: true
  -
    name: Maggie
    age: 28
    admin: false

Neste post de onde peguei o exemplo acima, apresenta outro uso com sinatra.


Nova série: “Eu não sabia que…”

Ao peger uma instância de um objeto qualquer e adicionar dinâmicamente um método a esta instância, ela se torna um singleton.

$ irb
>> o = Object.new
=> #<Object:0x393cbc>
>> def o.name; puts 'Tino Gomes'; end
=> nil
>> o.singleton_methods
=> ["name"]
>>

Legal, não? Não! Ah! tá, me dixculpa. :/


DRY config/database.yml

Sempre esqueço como fazer um database.yml limpo, então resolvi publicar.


login: &login
  adapter: mysql
  username: username
  password: password
  host: mysql.example.com

development:
  <<: *login
  database: app_dev

test:
  <<: *login
  database: app_test

production:
  <<: *login
  database: app_prod

Este exemplo foi extraído aqui.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 602 other followers