2

TDC2008 – Ao vivo

-

Infelizmente aqui no TDC 2008 não tem rede sem fio, portanto não poderei ficar postando o tanto que gostaria.
Agora vai começar uma palestra sobre Rest, SOA, ESB, etc. Acho que vai ser interessante.
Até agora o que mais gostei foi a oportunidade de reencontrar velhos amigos de profissão e de faculdade. Isto é demais!

0

The developer’s conference 2008 – eu vou!

-

Começa amanha a Developer’s Conference 2008, evento organizado pela globalcode e votlado ao público de desenvolvedores Java EE, bem como para gerentes de TI. Este ano a grade de palestras está muito legal, com algumas bem interessante, inclusive uma com Ed Burns falando sobre o JSF 2.0. A programação completa pode ser vista aqui e prometo que quem não puder comparecer lá, não vai perder nada, pois irei postar aqui no blog tudo o que julgar interessante para a comunidade Java EE. Pretendo, inclusive, postar via celular mesmo, caso algo seja realmente bombástico!

Então é isso, fique ligado no blog, que amanhã o dia será cheio de novidades.

0

Cobertura de testes no Rails

-

Após terminar a minha suite de testes unitários, rodei o famoso “rake stats” para ver como estava a relação linhas de código x linhas de teste. Para a minha surpresa deu aproximadamente 1 para 1 (surpresa, pois achei que tivesse escrito muuuuuuuuuito mais teste do que código, rs…). Mas ainda queria ter mais informações. Gostaria de saber se os meus testes estavam indo na direção certa…

Bom, dei uma pesquisada e achei duas coisas interessantes: RCov e Heckle.

O RCov se parece com o Emma que temos no mundo Java. Ele roda os testes e verifica a cobertura, ou seja, analisa quais linhas do seu código, realmente estão sendo chamadas. Com ele é menos provável que você acabe testanto o seu teste, ao invés do seu código.

Para usá-lo é muito simples, basta instalá-lo via ruby gems:

gem install rcov

E depois chamá-lo dentro do seu diretório raiz da aplicação:

rcov test/*.rb

Isto irá criar um diretório chamado “coverage”. Entre nele e abra o index.html. Recomendo fortemente.

Já o Heckle, parece ser muito massa, pelo que entendi, ele serve para validar a eficácia do seu testes. Como ele faz isso ? Bom, isso é assunto para um próximo post.

0

Ruby Smart Snippet

-

Uma das coisas que mais gosto em Ruby é o fato da linguagem mudar a sua forma de pensar. Por exemplo, olhe o código abaixo:

foobar = FooBar.find(:first)
if foobar.age >= 18
  puts 'Olá, você é maior de idade'
end

Mas, como você já é um programador experiente, sabe que foobar pode ser nulo (nil) e com isso ter problemas com o código acima. Desta forma você faria:

foobar = FooBar.find(:first)
if foobar && foobar.age >= 18
  puts 'Olá, você é maior de idade'
end

Desta forma você garante que só irá chamar foobar.age se foobar não for nulo. Mas, tem um jeito muito mais Ruby Way de se fazer isso. Olhe só o que encontrei neste post:

class NilClass
  def maybe(*a); self; end
end

class Object
  alias :maybe :send
end

age = FooBar.find(:first).maybe(:age)

Dessa forma, se FooBar.find(:first) retornar nulo, .maybe(:age) irá retornar nulo, ao invés de um erro falando que a Classe Nil não tem o “método” .age. Evidentemente isto não irá revolucionar a vida de ninguém, mas é apenas um exemplo de como podemos explorar o novo paradigma que ruby trouxe.

2

The Ruby way…

-

Hoje estou estreando uma nova categoria no meu blog. É a categoria RUBY! Aqui irei abordar assuntos, dicas, curiosidades e boas práticas para a linguagem ruby, bem como para o rails. E para facilitar o acompanhamento dessa nova “thread”, criei um novo Feed, que direciona diretamente para cá. Portanto se você quer ler apenas o conteúdo ruby, do meu blog, assine o este feed.

Para começar, mostrarei um exemplo de como pode ser simples a soma de todos os elementos de um array:

meu_array = [1,2,3,4,5,6,7,8,9,10]
meu_array.inject {|acumulador, valor_corrente| acumulador + valor_corrente}

Simples, não ? Mas atente aqui para a função inject. O nome dela parece ser meio ingrato, mas o que ela faz é iterar um array e ir “injetando” o acumuladorno bloco a cada interação. Com o ruby 1.8.7, será possível fazer:

meu_array = [1,2,3,4,5,6,7,8,9,10]
meu_array.inject(:*)

Para multiplicar todos os elementos de um array sem passar um bloco.