Niepopularne problemy ze współbieżnością

Chyba każdy programista obcujący z Rails dłużej niż 3 miesiące miał do czynienia z aplikacją uruchamianą w wielu (w sensie więcej niż jednej) instancjach za pośrednictwem np. Mongrela lub FastCGI. Za to niestety bardzo niewielu zdaje sobie sprawę z problemów, jakie wielość instacji przysparza - a także, jak wiele wygodnych, skrótowych metod w Rails jest potencjalnie niebezpiecznych.

Houston, czy naprawdę mamy problem?

Przykład pierwszy: unikalność

Na początek weźmy naprawdę trywialny przykład:

category = Category.find_or_create_by_name( "Tips and tricks" )

Czytelne? Tak. Eleganckie? Tak. Może spowodować jakiś błąd? Niestety odpowiedź również brzmi "tak". Zobaczmy, jakie kwerendy SQL "lecą do bazy" po wywołaniu powyższej linii kodu: