最初に
rails generate
コマンドは、モデル、コントローラー、マイグレーションなどの雛形を自動で作成してくれるコマンドですが、初期設定では関連ファイルを全て作成するので、不要なファイルがあった場合、毎回削除するのは面倒です。
なので、rails generate
で自動作成されるファイルを設定し、不要なファイルが作成されないようにしましょう!!
自動作成されるファイルを設定する
generate
コマンドの設定は、cofig/application.rb
を編集します。
まずなにも設定せず次のコマンドを実行したら(generate
はg
の一文字に省略できます。)
$ rails g controller user
create app/controllers/user_controller.rb
invoke erb
create app/views/user
invoke test_unit
create test/controllers/user_controller_test.rb
invoke helper
create app/helpers/user_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/user.coffee
invoke scss
create app/assets/stylesheets/user.scss
create
で一通りのファイルが作成されます。
しかし、test
、helper
、css
、javascript
ファイルは不要なことが多いので、作成されないよう設定していきます。
module Sample
class Application < Rails::Application
config.load_defaults 5.2
# generateファイルの設定
config.generators do |g|
g.skip_routes true # routes.rbにルーティングを追加しない、falseで追加する(falseがデフォルト)
g.assets false # assets以下のファイル(CSS, JavaScriptファイル)を作成しない
# g.assetsは分けて記述することもできる
# g.stylesheets false # stylesheets以下にファイルを作成しない
# g.javascripts false # javascripts以下にファイルを作成しない
g.helper false # helper以下にファイルを作成しない
g.test_framework false # test以下にファイル作成しない
end
end
end
g.作成されるディレクトリ名 false
でディレクトリ以下のファイルの作成をスキップできます。
設定後、先ほどと同じコマンドを実行すると
$ rails g controller user
create app/controllers/user_controller.rb
invoke erb
create app/views/user
設定したファイルは作成されずに、controller
とview
ファイルのみ作成されるようになりました。
rails destroyコマンドを使いこなそう
rails destroy
コマンドはrails generate
で生成されたファイルやディレクトリを一括削除してくれます。
書き方は、先ほどのコマンドのg
をd(destroy)
に書き換えるだけ
実行してみると
$ rails d controller user
remove app/controllers/user_controller.rb
invoke erb
remove app/views/user
remove
でgenerate
で作成されたファイルが削除されています。
rails destoroy
はファイルを一つずつ消す手間が、省けるので大変便利です。
まとめ
基本的な設定は以上です。
ぜひご自身でコマンドを実行してみて、違いを体感してみてください!
より詳細を知りたい方はRailガイドを参考にしてください
コメント