Custom Resource Name Plugin
Você criou toda sua aplicação seguindo os padrões de convenção do Rails e agora quer lançar o seu site para que todo o Brasil possa usá-lo. Mas o problema é que todas as URLs do seu projeto estão em inglês, mais ou menos assim:
Mas seu público não fala inglês e sim português. Na verdade você precisa mesmo é de algo assim:
Como conseguir isto? A forma mais comum é criar todo seu código usando nomes em português para seus models, controllers e tabelas no banco de dados. Mas isto é simplesment HORRÍVEL… No final você terá um código totalmente desnormalizado, metade em português e metade em inglês e ainda vai acabar perdendo muito da mágica no Rails. Esqueça!
Uma segunda maneira de conseguir isto, é usar este plugin. Você conseguirá o mesmo efeito sem precisar alterar nenhuma linha do seu código, apenas configurando de uma maneira muito simples o arquivo routes.rb.
Instalando
Através do terminal, via linhas de comando acesse a pasta onde está sua aplicação Rails. E rode o seguinte comando:
Como Usar?
Abra o arquivo routes.rb no seu editor de texto preferido.
ActionController::Routing::Routes.draw do |map|
map.resources :photos
map.resources :posts, :has_many => :comments
end
Para ter suas URLs totalmente em português sem precisar alterar o seu código já existente, ou deixar tudo meio português/meio inglês. Simplesmente inclua estas linhas no seu arquivo routes.rb:
map.aliases :resources, :posts => ÂartigosÂ,
:comments => ÂcomentariosÂ
map.aliases :actions, :new => ÂnovoÂ, :edit => ÂeditarÂ,
:logout => ÂsairÂ
A primeira linha altera o nome das rotas, e a segunda altera o nome das actions. Para ficar bem claro, seu arquivo ficará mais ou menos assim:
ActionController::Routing::Routes.draw do |map|
map.aliases :resources, :photos => 'fotos',
:posts => 'artigos', :comments => 'comentarios'
map.aliases :actions, :new => 'novo', :edit => 'editar',
:logout => 'sair'
map.resources :photos
map.resources :posts, :has_many => :comments
end
Pronto! Você não precisa se preocupar com mais nada, todas as suas URLs à partir de agora irão usar o novo nome.
O detalhe é que tudo que estiver DEPOIS destas linhas usará esta configuração como padrão. Então se tiver algo onde você não queira usar a tradução, coloque ANTES destas duas linhas.
Os helpers para acessar a rota devem continuar exatamente como antes:
photos_path #=> /fotos
photos_url #=> http://www.meusite.com/fotos
photo_path(@photo) #=> /fotos/6
new_photo_path #=> /fotos/novo
edit_photo_url(@photo)
#=> http://meusite.com.br/fotos/6/editar
Enfim, nada muda, somente a URL.
Testando
Para se certificar de que o plugin irá funcionar perfeitamente em seu aplicativo, de dentro da pasta do projeto execute via linha de comando:
Se todos os testes passarem, use o plugin tranquilamente.
Licença
Este código é livre para ser usado sob os termos da MIT license.
Contato
Comentários são bem-vindos. Envie um e-mail para mim via formulário de contato.
E por fim, se este plugin é útil para você, não esqueça de me recomendar no Working with Rails.