Posted on July 7, 2007 at 2:30 pm

User expected, got User?

Sem dúvida uma das mensagens mais irritantes que já tive o desprazer de encontrar nas andanças pelo Rails, a infame “User expected, got User” tende a aparecer, quando se utilizam plugins como o acts_as_commentable ou o acts_as_taggable, que definem Models dentro do diretório vendor/plugins.
A solução, como apontado pelo blog localhost:3000 blog (belo nome para um blog, diga-se de passagem ;)), é simples (apesar de meio “xunxo”): basta mover os models do plugin para o diretório apps/models de sua aplicação. A razão por trás do problema é que as libs (e o conteúdo do diretório vendor) não são carregadas a cada request, quando utilizando o modo “development”, diferentemente de todo o conteúdo do /app . Teoricamente, definir models dentro de plugins é uma má pratica, e deve ser evitado. Vale notar que o problema não acontece em modo production, onde os models não são recarregados o tempo todo.
Existe ainda uma maneira menos intrusiva de adicionar os plugins ao ‘reloadable path’, fazendo com que eles sejam recarregados junto da aplicação, conforme explicado neste link:

Tags:,

Leave a Reply