なんで誰もrails destroyを教えてくれなかったんだ #rails
あけましておめでとうございます。年末年始の休みを利用してRailsで遊んでおります。
そんななか地味に便利なRailsコマンドを見つけたのでメモ。
$ rails destroy
rails generateって便利ですよね。モデルやらコントローラやら何やらかんやらひな形を作ってくれる便利コマンドです。例えばユーザのひな形を作りたいなんていったら以下のコマンドで一発です。
$ rails generate scaffold user name:text age:integer invoke active_record create db/migrate/20130104071427_create_users.rb create app/models/user.rb invoke test_unit create test/unit/user_test.rb create test/fixtures/users.yml invoke resource_route route resources :users invoke scaffold_controller create app/controllers/users_controller.rb invoke erb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb invoke test_unit create test/functional/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit create test/unit/helpers/users_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/users.js.coffee invoke scss create app/assets/stylesheets/users.css.scss invoke scss identical app/assets/stylesheets/scaffolds.css.scss
git statusをみると沢山のファイルが増えたことが確認できます。config/routes.rbまで編集してくれてますね。賢い!
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: config/routes.rb # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # app/assets/javascripts/users.js.coffee # app/assets/stylesheets/users.css.scss # app/controllers/users_controller.rb # app/helpers/users_helper.rb # app/models/user.rb # app/views/users/ # db/migrate/20130104072447_create_users.rb # test/fixtures/users.yml # test/functional/users_controller_test.rb # test/unit/helpers/users_helper_test.rb # test/unit/user_test.rb no changes added to commit (use "git add" and/or "git commit -a")
こんなに沢山のファイルをコマンド1発で作ってくれるとかrails△とか言ってたら間違いに気づく訳ですよ。「あかんnameはtextやなくてstringや」と。
この間違いに気づいたとき、今までの僕はファイルを一つ一つ消していってました。作るのは簡単なのに取り消すのがめんどくさいってどういうことやねん。
ところが、これらのファイルをコマンド1発で消してくれるコマンドがあったんです。マジ、rails△。以下のコマンドで1発です。
$ rails destroy scaffold user invoke active_record remove db/migrate/20130104071427_create_users.rb remove app/models/user.rb invoke test_unit remove test/unit/user_test.rb remove test/fixtures/users.yml invoke resource_route route resources :users invoke scaffold_controller remove app/controllers/users_controller.rb invoke erb remove app/views/users remove app/views/users/index.html.erb remove app/views/users/edit.html.erb remove app/views/users/show.html.erb remove app/views/users/new.html.erb remove app/views/users/_form.html.erb invoke test_unit remove test/functional/users_controller_test.rb invoke helper remove app/helpers/users_helper.rb invoke test_unit remove test/unit/helpers/users_helper_test.rb invoke assets invoke coffee remove app/assets/javascripts/users.js.coffee invoke scss remove app/assets/stylesheets/users.css.scss invoke scss
めっちゃ消えた!git statusをみるとちゃんとconfig/routes.rbも元通りです。
$ git status # On branch master nothing to commit, working directory clean
うむ。すっきり。
まとめ
generateしたものをdestroyする準備はできているからこれからも怖がらずにgenerateしまくろうね!ってことで。