Novo OS 2.0 traz email integrado e aplicativos Android para o PlayBook
Boatos: Microsoft pode ter Office para iPad
Guia de salários: carreira em e-commerce pode pagar até R$ 16 mil
Google ignora controles de privacidade do IE, diz Microsoft
iPad 3 terá SoC Apple A5X
Lista de falhas: iPad 2 é mais seguro que Kindle Fire
Fundador do Megaupload é solto pela justiça
Anonymous: conheça os 10 principais fatos do grupo
Anônimos, trolls e fakes: dicas de etiqueta para lidar na internet
Especial Carreiras em TI: entenda o que faz um arquiteto de solução
Solução capta e reporta falhas em softwares
Guia de salários: profissionais de help desk ganham até R$ 16,7 mil

Módulos em Ruby são grupos de métodos, constantes e variáveis de classes. Os módulos não podem ser instanciados e não existe herança de módulos.
Há duas maneiras de usar os módulos:
Nest post falarei somente sobre o uso de módulos como namespaces.
Bons motivos para usar namespaces são:
Então vamos a um exemplo.
Imagine uma loja virtual que utiliza duas empresas de envio de mercadorias: Correios e FedEx. Para essas duas empresas é feito o cálculo de frete, utilizando as informações dos produtos nos pedidos dos clientes, no carrinho de compras da loja.
Então teríamos duas classes de cálculo de frete, uma para os Correios e outra para FedEx. Não podemos ter duas classes com o mesmo nome, por exemplo uma classe chamada Frete, então criamos dessa forma:
Com namespaces, você consegue uma maneira mais organizada de nomear essas classes:
No código acima, criamos o módulo Frete e dentro do módulo as classes Correios e Fedex.
Para instanciar uma classe com namespace, utilize o sintaxe NomeDoModulo::NomeDaClasse.new, como no código abaixo:
Os módulos podem também ter constantes. Vamos criar um constante de peso mínimo no nosso módulo Frete:
Uma constante em um módulo é acessível fora do módulo utilizando a sintaxe NomeDoModulo::NOME_DA_CONSTANTE. Dentro do módulo, e consequentemente das classes que estão no módulo, pode-se usar a constante sem o prefixo do nome do módulo. Vejo exemplo da constante PESO_MINIMO:
Não necessariamente você precisa criar todas as classes aninhadas de um módulo em um arquivo só. Para o nosso exemplo, poderíamos ter um arquivo para o módulo e também um arquivo para cada classe.
Outra maneira de declarar namespaces é colocar o nome do módulo, seguido de :: (4 pontos), antes do nome da classe.
No próximo post falarei sobre o uso de módulos como mixin.
Desenvolvedor sênior na Locaweb, empresa na qual está desde 2007, Fernando Hamasaki de Amorim trabalha desde a criação até a arquitetura, modelagem, análise e integração de sistemas e aplicativos na companhia. Graduado em Tecnologia em Informática pela UniSant'Anna, o profissional possui pós-graduação em Tecnologias Web com Ênfase em Java pela Fiap. Já atuou em diversas outras companhias, tais como a TV Online, empresa brasileira pioneira em transmissões ao vivo e SAC Sistemas, que desenvolve ERP. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.
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
Conversando sobre Tecnologia
Anderson Rocha
Transpondo Fronteiras da Multidisciplinaridade para Lidar Com Falsificações de Imagens e Vídeos no Século XXI*
Mídias Sociais e Negócios - Direto do Vale do Silício
Marcio Saito
7 Ações em Mídia Social para quem tem mais o que fazer
Expedição WDC: o diário do sinal de internet no Brasil
Expedição WDC
Pegue uma carona na Expedição WDC/Abranet