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.


Desabilite acesso a URLs reais em seus testes com Fakeweb

Em um dos projetos que estou trabalhando atualmente, a suite de testes começou a demorar a executar, papo de 5 minutos. Então, habilitando a opção de profile do RSpec para identificar quais testes estavam lentos, identifiquei que eram os testes referentes a importação de feeds. Então, o que descobri? Que na verdade, os testes estavam fazendo requisições reais dos feeds. Então, primeiro passo é, desabilitar acesso a URLs reais e nada como o bom e velho Fakeweb para ajudar nessa parte.

Dois passos simples

No Gemfile:

gem "fakeweb", :group => :test

E no spec/spec_helper.rb:

FakeWeb.allow_net_connect = false

Agora toda a suite roda em 30 segundos. Claro, próximo passo é arrumar os testes que estão quebrando e nesse caso. MOCK NELES!


TextMate Bundle for Factory Girl

Hoje tenho escrito testes com RSpec e como sou fã do Factory Girl e não quero “poluir” meu TextMate com o bundle do Ruby Shoulda aqui no trabalho, resolvi extrair os Snippets do Factory Girl que contem no mesmo em um Bundle só para o mesmo… Então, está disponível no meu github para que todos que queiram possam usar.

http://github.com/tinogomes/factory_girl-tmbundle

That’s all folks!


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 602 other followers