Como reverter uma 'geração de trilhos'

471

Desejo excluir todos os arquivos criados e reverter as alterações feitas, mas não necessariamente no banco de dados, mas mais nos arquivos de configuração.

Gostaria de excluir automaticamente todos os mapeamentos de recursos para o modelo / controlador excluído no arquivo routes.rb e em qualquer outro lugar em que as alterações possam ter sido feitas?

marcamillion
fonte

Respostas:

929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

O Rails 3.2 adiciona um novo datalho ao comando, então agora você pode escrever:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho
Fábio Batista
fonte
1
Btw, como uso esse comando para excluir um andaime? O modelo e o controlador funcionam bem ... mas como faço para reverter completamente um andaime?
Marcamillion 12/11/2010
6
Ok, eu descobri. Talvez eu estivesse digitando algo errado. Eu apenas corri rails destroy scaffold lalalale isso funcionou.
Marcamillion 12/11/2010
38
@marcamillion Deve ter sido esse 'L' extra.
28512 variat
1
Que tal remover arquivos associados a uma instalação gem, comorails generate <gemname>:install
doug
2
@ Doug, eu não acho que isso é possível. Sua melhor aposta é apenas executar novamente o gerador com a -fbandeira para forçá-lo a recriar / reeditar os arquivos ... Então você pode ver quais arquivos ele criou / alterou e continuar excluindo-os manualmente.
Fábio Batista
49

Vale mencionar a -pbandeira aqui ("p" para fingir ).

Se você adicionar isso ao comando, ele simplesmente executará um "teste" e mostrará quais arquivos serão excluídos sem realmente excluí-los.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Se você estiver satisfeito com isso, execute o comando novamente sem a -pbandeira.

Maikon
fonte
Eu acho que essa é a melhor resposta
Emil Rena Enriquez
24

rails destroy controller Controller_nameestava retornando um monte de erros. Para poder destruir o controlador, tive que remover rotas relacionadas em routes.rb. PS estou usando trilhos 3.1

Maikel
fonte
Não resuma suas ações, a menos que você pretenda que esta resposta seja a resposta correta selecionada.
o homem de lata
11

Este é um protótipo para gerar ou destruir um controlador ou modelo no Rails:

rails generate/destroy controller/model [controller/model Name]

Por exemplo, se você precisar gerar um Controlador de Usuário:

rails generate controller User

ou

rails g controller User

Se você deseja destruir o controlador do usuário ou reverter para a ação acima, use:

rails destroy controller User

ou:

rails d controller User

insira a descrição da imagem aqui

uma
fonte
4

Você pode usar rails d model/controller/migration ...para destruir ou remover as alterações geradas usando o rails generatecomando

Por exemplo:

rails g model Home name:string

cria um modelo chamado homecom o atributo name. Para remover os arquivos e o código gerado a partir desse comando, podemos usar

rails d model Home
Kishore
fonte
3

Você pode destruir todas as coisas criadas da mesma maneira, exceto pequenas mudanças. Para o controlador,

rails d controller_name (d stands for destroy)

Para o modelo

rails d model_name

você acabou de colocar em d(destroy)vez de g(generate)na sua migração.

Foram Thakral
fonte
3

Se você preferir excluir o controlador manualmente:

Para controlador welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss
Patrick_870206
fonte
3

Você pode reverter sua

rails g/generate controller/model/migration xxx

saída usando:

 rails d/destroy controller/model/migration xxx
o homem de lata
fonte
3

Suponha que eu criei um controlador chamado "sample" como:

rails generate controller sample

Se eu tiver que destruir este controlador, tudo o que tenho a fazer é trocar generatecom destroy, como em

rails destroy controller sample.

Se você quiser reverter a geração, tudo que você tem a fazer é trocar generatecom destroy.

L11
fonte
3

Se você usa Rails, use rails d controller Users.

E, se você usa Zeus, use zeus d controller Users.

Por outro lado, se você estiver usando git ou SVN, reverta suas alterações com o número de confirmação. Isso é muito mais rápido.

Santanu
fonte
3

Você pode desfazer um rails generatedas seguintes maneiras:

  • Para o modelo: rails destroy MODEL
  • Para o controlador: rails destroy controller_name
Vipul Lawande
fonte
1

Para reverter isso, nós apenas a destruímos. Abra o aplicativo Terminal e vá para o diretório do projeto e digite este:

rails destroy model CamelCase
rails destroy controller CamelCase

Onde CamelCaseé o nome de qualquer modelo ou controlador. Ele removerá o modelo, a migração e alguns dos arquivos de teste relacionados. (Você pode ver o resultado na janela Terminal depois de executar o comando.)

Chutipong Roobklom
fonte
0

Usamos gerar como rails generate app. Portanto, a regeneração de qualquer generateinstrução pode ser revertida usando a destroyinstrução Basta substituir generatepor destroy ie rails generate apppode ser escrito como os rails destroy app' trilhos geram ____ astrilhos destroem ____ `

Krishnaraj R
fonte
0

Andaimes removidos para o modelo selecionado:

bin/rails d scaffold <AccessControl> //model name
Dinesh Vaitage
fonte
0

Antes de reverter rails generate, certifique-se de reverter a migração primeiro.

Caso 1: se você deseja reverter o andaime, execute este comando:

rails destroy scaffold MODEL_NAME

Caso 2: se você deseja reverter o modelo, execute este comando:

rails destroy model MODEL_NAME

Caso 3: se você deseja reverter o controlador, execute este comando:

rails destroy controller CONTROLLER_NAME

Nota: você também pode usar o atalho em dvez de destroy.

Manoj Kumar
fonte
0

Para reverter rails generate, use rails destroy:

rails destroy Model

Veja " rails destroy" para mais informações.

purga
fonte
0

Todas as versões dos trilhos têm um "destroy"; portanto, se você criar um andaime (por exemplo) chamado "tasks" usando um gerador, para destruir todas as alterações dessa etapa de geração, será necessário digitar:

rails destroy scaffold Tasks

Espero que ajude você.

Flautariano
fonte