O que esperar do próximo iPhone
A TI deve confiar nos dispositivos móveis?
Plantronics cria comunidade de desenvolvedores
Guia de salários: gerentes de bancos de dados recebem até R$ 8,7 mil
Microsoft: Windows 8 chegará no final deste ano
Ah, Facebook, por que não consigo lhe largar?
4G Americas: saiba o que as operadoras devem fazer para atender demanda por dados
ATUALIZADA - Brasil: veja a lista de dispositivos que serão atualizados para Android 4.0
EMC lança mais de 40 produtos entre hardwares e softwares
Forrester: preparem-se para a segunda onde de aplicativos móveis
ATUALIZADA - Fique por dentro da compra da Motorola Mobility pelo Google
Windows Phone 7: usuários não poderão baixar apps do Marketplace

Em um post anterior vimos como usar módulos como namespaces. Agora veremos como usar os módulos em Ruby como mixin, misturando os métodos de instância de um módulo em outras classes.
Para misturar um módulo em uma classe, usamos o método privado include de Module passando como parâmetros qual ou quais módulos serão misturados na classe.
Ruby não suporta herança múltipla de classes, então o mixin de módulos oferece uma alternativa para adicionar funcionalidades em suas classes. Veja um exemplo misturando os módulos Enumerable e Comparable em uma classe:
Módulos também podem ser misturados em outros módulos:
Entretanto, não é possível fazer mixin de classes, ou seja, adicionar funcionalidades de uma classe para outras classes. Se você deseja ou necessita fazer isso, extraia a funcionalidade que você quer compartilhar de uma classe para um módulo e misture esse módulo em outras classes e/ou módulos.
Algo interessante é que você pode definir o método construtor de classe também em um módulo, já que o initialize é um método de instância.
Para uma classe fornecer a própria implementação do initialize e ainda sim utilizar a implementação do módulo, use super para chamar o método initialize do módulo.
Note que nos dois últimos códigos acima foi utilizada a variável de instância @title definida no módulo Information. As variáveis de instância definidas nos módulos ficam disponíveis para as classes onde eles são misturados. Criar variáveis de instância em módulos não é uma boa prática, pois poderá acontecer colisões de nomes dessas variáveis por outros módulos ou mesmo nas classes onde eles estão sendo misturados.
Se você realmente precisa definir variáveis de instância em um módulo, uma alternativa seria prefixar o nome da variável de instância com o nome do módulo.
Desenvolvedor sênior na Locaweb, Fernando Hamasaki de Amorim atua em projetos utilizando Ruby e Rails. Pós-graduado em Tecnologias Web Fiap, trabalha desde 2000 com desenvolvimento web, onde já desenvolveu em várias plataformas e linguagens, como .NET, Java, JavaScript, PHP e ASP. Também foi palestrante do FISL e da RubyConf Brasil. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.
Conscientização e Dicas de Segurança da Informação
Anderson Santana
Artigo: Proteção de Dados
Dirty & Ugly Web
Paulino Michelazzo
Caiu na rede
Internet Upgrade
Victor Maeda
Ataques DDos aos bancos brasileiros.
Inovação, tecnologia e futurismo
Bráulio Medina
SIRI, MAJEL, EVI - Colhemos os frutos da semântica e inteligência artificial
Mundo RIA
Zaedy Sayão
Construindo Mobile Apps com Sencha Touch e Phonegap - Parte 1