【Ruby on Rails】rails generateコマンドで不要なファイルを作成されないようにしよう!

Ruby on Rails

最初に

rails generateコマンドは、モデル、コントローラー、マイグレーションなどの雛形を自動で作成してくれるコマンドですが、初期設定では関連ファイルを全て作成するので、不要なファイルがあった場合、毎回削除するのは面倒です。

なので、rails generateで自動作成されるファイルを設定し、不要なファイルが作成されないようにしましょう!!

自動作成されるファイルを設定する

generateコマンドの設定は、cofig/application.rbを編集します。

まずなにも設定せず次のコマンドを実行したら(generategの一文字に省略できます。)

$ 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で一通りのファイルが作成されます。

しかし、testhelpercssjavascriptファイルは不要なことが多いので、作成されないよう設定していきます。

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

設定したファイルは作成されずに、controllerviewファイルのみ作成されるようになりました。

rails destroyコマンドを使いこなそう

rails destroyコマンドはrails generateで生成されたファイルやディレクトリを一括削除してくれます。

書き方は、先ほどのコマンドのgd(destroy)に書き換えるだけ

実行してみると

$ rails d controller user
      remove  app/controllers/user_controller.rb
      invoke  erb
      remove    app/views/user

removegenerateで作成されたファイルが削除されています。

rails destoroyはファイルを一つずつ消す手間が、省けるので大変便利です。

まとめ

基本的な設定は以上です。

ぜひご自身でコマンドを実行してみて、違いを体感してみてください!

より詳細を知りたい方はRailガイドを参考にしてください

コメント

タイトルとURLをコピーしました