Andei brincando muito com rotas nomeadas ultimamente. O problema é que eu precisa de uma forma bem rápida de testar se as rotas que eu estava criando estavam realmente funcionando, enquanto eu editava o arquivo route.rb. E a melhor forma que encontrei foi testar as rotas no console do Rails.
Para isto bastou executar dois trechos de código antes de começar com a brincadeira:
$ ./script/console
# Loading development environment (Rails 2.1.1)
>> include ActionController::UrlWriter
# => Object
>> default_url_options[:host] = "example.com"
# => "example.com"
Agora é só testar as rotas:
>> user_url(1)
# => "http://example.com/users/1"
>> user_photos_url(1)
# => "http://example.com/users/1/photos"
Outro problema é que quando o arquivo route.rb é alterado, isto não reflete no console. Para ter acesso as últimas modificações, toda vez que houver uma atualização você terá de executar:
>> reload!
# Reloading...
# => true
Boa diversão!
Atualização
O Nando Vieira e o Daniel Lopes deram uma dica que eu não conhecia, que aliás torna muito mais fácil fazer a mesma coisa. Veja os comentários abaixo.
Alternativamente, é possível utilizar o objeto `app`,
app.user_url(1)
app.user_photos_url(1)
Eu também uso o objeto “app”, acho mais simples… e se você quiser que ele imprima o domínio mas real é só atribuir o valor a variável de instância host.
Por exemplo
app.host = “www.nomedojogo.com”
app.accounts_url # => http://www.nomedojogo.com/contas
Poxa… assim é muito mais fácil!
Ah, para complementar… tem também o objeto `helper`, que, d’oh, tem todos os helpers! ;)