Rails 2.2: Erro ao criar dois controllers com o mesmo nome

11 de dezembro de 2008  |  Rails 2.2  | 

No Rails 2.1 em alguns casos ao se criar dois controllers com o mesmo nome, mas em namespaces diferentes um erro acontece, veja:

$ rails -v
Rails 2.1.0

$ ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]

$ rails test

$ cd test/

$ script/generate scaffold Posts title:string body:text

$ script/generate controller -t Admin::Posts
The name 'Admin::PostsHelper' is either already used in your application or reserved by Ruby on Rails.
  Please choose an alternative and run this generator again.
  ...

Mais um bug corrigido na versão 2.2.


Todos os exemplos dados aqui funcionarão somente no Ruby on Rails 2.2 ou superior. Você pode encontrar mais detalhes sobre esta e outras novidades do Rails 2.2 no e-book “Ruby on Rails – O que há de novo?“.



4 Comentários


  1. Mas isso é um erro? Isso é uma funcionalidade não? Ao criar dois controllers e o scaffold permitir isso, vai sobrescrever o primeiro, não?

  2. Daniel, em namespaces diferentes não.

  3. A ta entendi, agora eu entendi qual o erro… o scaffold não permitia gerar o um novo controller com mesmo nome mesmo em namespace diferente. Eu nunca tive esse problema pq normalmente eu criava tudo no mesmo namespace e copiava os controllers para a pasta do novo namespace duplicando os arquivos.

  4. Eu criar fazer algo do tipo:

    ruby script/generate scaffold player Admin::Player

    Ou seja, criar um scaffold e especificar que o controlador é admin/player_controller.rb e os templates também ficarem em admin/player

    Tem como fazer isso?

    Eu sei que no Rails 1.2.6 funcionava, agora no rails 2.2.2 ele não deixa fazer isso no scaffold.

Deixe um comentário