terça-feira, 1 de janeiro de 2013

Que tal migrar para Haml?

Que tal começar 2013 migrando as telas de seus projetos Rails para Haml? Ou pelo menos de um de seus projetos?
A experiência pode ser mais empolgante do que você pensa!

O Rails utiliza ERb na camada de visão por padrão, mas é possível mudar para outras opções e até mesmo criar a sua própria.

terça-feira, 11 de dezembro de 2012

Módulos e Mixins com Ruby

No post sobre blocos em Ruby, rasguei elogios para a linguagem quanto à versatilidade e simplicidade. Neste post vou pular essa parte (que acredito estar implícita) e falar sobre módulos e mixins em Ruby.

Assim como os blocos, os módulos também estão presentes em toda parte no código de uma aplicação desenvolvida com Ruby on Rails. O framework Rails faz amplo uso dessa facilidade da linguagem Ruby para disponibilizar funcionalidades por todas as camadas da aplicação, o que também pode ser explorado pelo desenvolvedor em funcionalidades próprias.

Para quem vem da linguagem Java, módulos podem se parecer com as interfaces, no entanto, diferem em aspectos fundamentais.

terça-feira, 4 de dezembro de 2012

Objetos em JavaScript

Me lembro que fiquei muito intrigado quando ouvi de um colega da área que sua linguagem de programação preferida atualmente era JavaScript. Esse camarada foi instrutor em uma conceituadíssima escola de desenvolvimento e, na ocasião em que nos falamos, era consultor sênior em uma grande empresa igualmente muito bem conceituada, logo, sabia do que estava falando, por isso fiquei mais intrigado ainda.

Na sequência dos acontecimentos, o destino me levou a parar em um projeto onde fiz uso intensivo de JavaScript. Bela coincidência!

Simplificando TDD com FactoryGirl

Com o conceito de Extreme Programming (XP), publicado em 1999 por Kent Beck, surgiu também o conceito de Test Driven Development (TDD), que propôs a elaboração de códigos de testes antes da implementação efetiva da aplicação.
Os testes sendo implementados primeiro são então seguidos pela implementação da funcionalidade que os faça passar. Com isso, desde seu início até a implementação de suas últimas funcionalidades, o software estará o máximo possível coberto por testes que garantam sua estabilidade e confiabilidade. Uma grande vantagem é a possibilidade de sempre poder realizar refatorações no código, bastando garantir que os testes continuem passando, mantendo assim um código limpo e de alta qualidade e manutenibilidade.

Mas o objetivo aqui é falar da FactoryGirl, uma RubyGem criada pela thoughtbot que simplifica o desenvolvimento de TDD em Rails, sendo uma alternativa ao uso de fixtures.

terça-feira, 13 de novembro de 2012

Adicionando e removendo ações de um roteamento REST em Rails

Dando continuidade ao estudo de roteamento com Rails introduzido no post anterior, vou mostrar como é possível adicionar ações a um roteamento REST, indo além das sete definidas por padrão, e também como fazer para remover alguma das operações padrão quando esta realmente não for necessária em sua aplicação.

segunda-feira, 12 de novembro de 2012

Roteamento de Resources em Rails

Rails Routing, traduzindo e explicando, é a forma como o framework Rails infere a rota até a ação de um controlador através da URL no browser e do método HTTP (GET, POST, PUT ou DELETE).
Conforme já mencionei no post sobre múltiplos bancos de dados, o Rails segue o padrão de convention over configuration. As convenções assumidas para o roteamento vão servir para a grande maioria dos casos, mas customizar o roteamento em sua aplicação é fácil e extremamente flexível.

sexta-feira, 9 de novembro de 2012

Filtrando associações em Rails

Alguns posts aqui no blog já exemplificaram como funcionam as associações na camada de modelo do Rails com ActiveRecord e como efetuar alguma pesquisa (query) a partir de algum modelo. Neste post vou demonstrar como combinar as duas coisas, efetuando filtros a partir de uma associação, usando tanto recurso de blocos quanto de mixins com módulos, também já abordados em posts anteriores.



Rails scope e default_scope (EDITADO)

Neste post pretendo demonstrar como é possível fazer uso de scope e default_scope na camada de modelo de aplicações em Rails de forma a centralizar regras de pesquisa sem violar outras camadas da aplicação e mantendo a simplicidade do código.

quinta-feira, 8 de novembro de 2012

Múltiplos Bancos de Dados com Rails

O Rails segue o conceito de convention over configuration que assume diversos padrões em vários aspectos das aplicações até que se defina o contrário. Por exemplo, o Rails assume que a aplicação será RESTful, ou seja, utilizará os métodos do protocolo HTTP para identificar os tipos de ações a serem executadas para cada requisição do cliente. Também assume que a aplicação será dividida em camadas seguindo o padrão MVC. E uma das convenções assume que você terá um banco de dados, com três ambientes: desenvolvimento, testes e produção.

quarta-feira, 7 de novembro de 2012

Auto-relacionamento Many-to-Many com Rails

Nas aplicações que a maioria de nós desenvolve, é relativamente comum ter auto-relacionamentos, em que uma entidade referencia ela mesma através de um ou mais atributos. Também é comum ter relacionamentos muitos-para-muitos (many-to-many), em que duas entidades podem ser referenciadas por um ou mais registros da outra. Porém, há uma terceira possibilidade, que são os auto-relacionamentos many-to-many, cujo primeiro exemplo que vem à mente é o das redes sociais, tão comuns hoje em dia, onde o perfil de uma pessoa pode possuir vários amigos, que na verdade são outros perfis também de pessoas que também possuem vários amigos e assim por diante, tudo em uma única entidade Pessoa. Na continuidade vou ilustrar as duas primeiras situações, mais comuns, e em seguida mostrar como a terceira situação pode ser implementada com o framework ActiveRecord, incluído por padrão no Rails.