Different layout for the same controller

In some projects can happen that you have to use different graphic templates for different methods of the same controller. At first sight one would implement a solution that provides an explicit call to the desired layout within each action.Something like this:123456789101112131415161718192021class PostController < ApplicationController def index [...] :layout => 'standard' end ...

Read more

How to install MySQL and Rails on Osx Snow Leopard

Hello everyone. These days I've bought a MacBook Pro with Osx Snow Leopard 64-bit pre installed. Having to develop mainly in Rails and Django on MySQL and PostgreSQL, I've found some difficulties to install and properly configure all packages. The main problems were due to the presence of 32bit libraries a...

Read more

Rails Best Practices 5: Optimize Migration

Migrations, in my opinion, are one of the best things in Rails since these allow the creation and populating the database using ruby code without having to worry about which type of db run below. That said, even writing the migration is better to follow some best practices. 1. DB Index The first practice I strongly recommend is to define indices for the external keys and for all those columns on which you will make sort, search an...

Read more

Rails Best Practices 4: Put method in the right model

In today’s post I will show some optimization we can do for models. I’ll focus on how to put methods inside the right model and delegation to get a better code.1. Put method in the right modelIn our example, suppose we want to represent the animal world by creating a model Kind that represents types of animal and an Animal models representing animals. For each type (quadrupedal, bipedal, bird) there are different animals that justify...

Read more

Design Patterns in Ruby: Chain of Responsibility

Today's post discusses the first of the behavioral pattern shown by the GoF, the chain of responsibility. This pattern expects a series of commands to be executed and a set of objects capable to handle them. Each of these "handler" objects can send the command to the next handler in the chain if it is not able to carry it out. A mechanism a...

Read more

Rails Best Practices 3: Increase Controller’s readability

[POST UPDATE ON 19/07/2010 - 15:45] Continuing our analysis of the Rails Best Practices today we’ll see two other tricks to make more readable method of the controller.1. Methods within modelSuppose we have the classic user registry defined in such a way that an admin user can enable or disable other users.The deactivate method inside user Controller may be defined as follows:123456789...

Read more

Design Patterns in Ruby: Adapter

This second post of the series leaves for a moment the creational patterns and speaks about one of the most important structural pattern: the Adapter. The purpose of an adapter is "to convert the interface of a class into another interface clients expect. Adapter lets classe...

Read more

Design Patterns in Ruby: Abstract Factory

An abstract Factory provides a common interface for creating families of related objects together. The client object does not bother to build objects directly, but it calls the methods provided by this common interface. Below is showed one possible implementation of an abstract Factory and its concrete Factories that implement it. Suppose we have two categories...

Read more