
:XD: A metaprogramação à qual me refiro é aquela onde criamos construções que definirão elementos no nosso código. Uma maneira de “criar” uma linguagem para resolver problemas (DSL) e não se repetir (DRY).Esse scaffold permite que nós, desenvolvedores, tenhamos o código rodando de maneira mais rápida e, a medida do tempo, podemos trabalhar substituindo o scaffold por nosso código.
:XD: Ruby possui a maioria dos aspectos necessários à metaprogramação: é dinâmica, os elementos estão abertos a mudanças (Mixins), tem blocos de código (Closures, Code Blocks) que permitem definir novas estruturas de controle e também tem sintaxe simples, enxuta, expressiva e legível.
:XD: Em Ruby tudo são objetos, e classes são um tipo especial de objeto a diferença é que podem conter métodos, métodos não são armazenados em objetos mas sim em suas respectivas classes, objetos armazenam variáveis de instância. Ainda assim podemos criar métodos particulares a um objeto que não afetam as outras
instâncias.
:XD: Geradores Rails faz uso de refletion em tempo de execução e ‘metaprogramação’ o que elimina grande parte do código que normalmente é necessário em uma aplicação tradicional. A utilização dos geradores do Rails permite que esse código ‘burocrático’ (porém necessário!) seja feito pelo Rails, enquanto você se preocupa com as regras de negócio efetivamente(que é o mais importante!).
:XD: MVC Rails é um framework MVC (model, view, controller) que permite a criação de aplicações de modo descomplicado com todas as camadas integradas de maneira transparente. Rails permite a criação de aplicações web ?por completo?, ao contrário de outros frameworks que necessitam ‘complementos’ para uma solução completa (por exemplo, um desenvolvedor Java pode precisar de Hibernate, Struts, Tiles, JSF, … para criar uma aplicação MVC completa).