How to reverse a 'rails generate'
RubyRuby on-Rails-3Rails GenerateRuby Problem Overview
I want to delete all the files it created and roll back any changes made, but not necessarily to the database, but more to the config files.
I'd like to automatically delete all the resource mappings for the model/controller deleted in the routes.rb file and everywhere else that changes might have been made?
Ruby Solutions
Solution 1 - Ruby
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho
Rails 3.2 adds a new d
shortcut to the command, so now you can write:
rails d controller lalala
rails d model yadayada
rails d scaffold hohoho
Solution 2 - Ruby
It's worth mentioning the -p
flag here ("p" for pretend).
If you add this to the command it will simply do a "test" run and show you what files will be deleted without actually deleting them.
$ 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
If you're happy with it, run the command again without the -p
flag.
Solution 3 - Ruby
rails destroy controller Controller_name
was returning a bunch of errors. To be able to destroy controller I had to remove related routes in routes.rb. P.S. I'm using rails 3.1
Solution 4 - Ruby
This is a prototype to generate or destroy a controller or model in Rails:
rails generate/destroy controller/model [controller/model Name]
For example, if you need to generate a User Controller:
rails generate controller User
or
rails g controller User
If you want to destroy the User controller or revert to above action then use:
rails destroy controller User
or:
rails d controller User
Solution 5 - Ruby
You could use rails d model/controller/migration ...
to destroy or remove the changes generated by using the rails generate
command.
For example:
rails g model Home name:string
creates a model named home
with attribute name
. To remove the files and code generated from that command we can use
rails d model Home
Solution 6 - Ruby
If you use Rails, use rails d controller Users
.
And, if you use Zeus, use zeus d controller Users
.
On the other hand, if you are using git or SVN, revert your changes with the commit number. This is much faster.
Solution 7 - Ruby
You can revert your
rails g/generate controller/model/migration xxx
output by using:
rails d/destroy controller/model/migration xxx
Solution 8 - Ruby
If you prefer to delete the controller manually:
For controller 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
Solution 9 - Ruby
You can undo a rails generate
in the following ways:
- For the model:
rails destroy MODEL
- For the controller:
rails destroy controller_name
Solution 10 - Ruby
Suppose I have created a controller named "sample" like:
rails generate controller sample
If I have to destroy this controller, all I have to do is swap generate
with destroy
, as in
rails destroy controller sample.
If you want to reverse the generation, all you have to do is swap generate
with destroy
.
Solution 11 - Ruby
You can destroy all things that was created same way except little thing change. For controller,
rails d controller_name (d stands for destroy)
For Model
rails d model_name
you just put d(destroy)
instead of g(generate)
in your migration.
Solution 12 - Ruby
To reverse that, we just destroy it. Open the Terminal application and go to the project directory, then, type this:
rails destroy model CamelCase
rails destroy controller CamelCase
Where CamelCase
is a name of any model or controller.
It will remove the model, migration and some of the related test files. (You can see the result in the Terminal window after you have run the command.)
Solution 13 - Ruby
To reverse rails generate
, use rails destroy
:
rails destroy Model
See "rails destroy
" for more information.
Solution 14 - Ruby
All versions of rails have a "destroy", so-, if you create a (for example) scaffold named "tasks" using a generator, to destroy all the changes of that generate step you will have to type:
rails destroy scaffold Tasks
Hope it helps you.
Solution 15 - Ruby
Before reverting the rails generate
, please make sure you rollback the migration first.
Case 1: if you want to revert scaffold then run this command:
rails destroy scaffold MODEL_NAME
Case 2: if you want to revert model then run this command:
rails destroy model MODEL_NAME
Case 3: if you want to revert controller then run this command:
rails destroy controller CONTROLLER_NAME
Note: you can also use shortcut d
instead of destroy
.
Solution 16 - Ruby
Removed scaffolding for selected model:
bin/rails d scaffold <AccessControl> //model name
Solution 17 - Ruby
We use generate as
rails generate app
.
So regenerating any generate
statement can be reversed using destroy
statement.
Just replace generate
with destroy
i.e. rails generate app
can be written as rails destroy app'
rails generate ____as
rails destroy ____`