【ruby on rails】rakeタスクの作成
こんにちは!
今回はrakeタスクの作成について備忘録します。
DB作成する際、
$rake db:create
など打ちます。こちらがrakeタスクに登録されているので使えることになります。
・今あるrakeタスクの確認方法
$rake -T
---------------略
rake db:create # Creates the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:create:all to c...
rake db:drop # Drops the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop ...
rake db:environment:set # Set the environment value for the database
rake db:fixtures:load # Loads fixtures into the current environment's database
rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)
rake db:migrate:status # Display status of migrations
----------------など略
(左側:コマンド 右側:#説明)になります。
今回は、
rake db:seed # Loads the seed data from db/seeds.rb
seedファイルを分割して実行するrakeタスクを作成しました。
(フリマサイトの1200このカテゴリーデータを作成するため)
作成には、こちらのサイトさまを参考にさせていただきました!
https://qiita.com/suzuki-koya/items/787b5562d2ae1a215d94
■まずテスト実行でつくってみた
①rakeタスクファイルの作成
$rake g task moco($rake g task 【タスク名】)
→create lib/tasks/moco.rake (この場所に書かないとタスク登録されません!)
lib/tasks/moco.rake(初期設定)
③確認
・ターミナル
$rake -T
-----------
rake moco:hello # テストタスクの設定 →増えた!
■テスト実行でつくってみた2(引数あり)
アプリケーションのrake routeの内容が膨大なので、キーワードを含むルーティングだけ表示させるようにします。
・ターミナル
$rake -T
-----------
rake moco:r3[o] # テスト2(rake routes)
-----------
・実行
$ rake moco:r3[user] ←引数[o]にuserを入れた(rake routesからユーザ関連のrouteを抜き出す)
・結果
----------------
rake routes |grep user
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
----------------略
→user関連のルーティングだけ出てきた!
・参考
https://qiita.com/mosson/items/9a9b0703ac4c76ebfd4e
引数を渡す
https://easyramble.com/ways-for-rake-tasks.html
1200程度のカテゴリデータを分割したseedファイルに記載したので、rakeタスクファイルを作成して投入します
→db/seeds/category.rb 作成済み・カテゴリー投入データ記載済み
(通常のdb/seeds.rbに記載しただけならrake db:seedで投入できます)
・rakeタスクファイル作成
$rake g task task_seed
・タスク編集
lib/tasks/task_seed.rake
・rakeタスク確認
rake task_seed:db:seed:category # Load the seed data from db/seeds/category.rb
・rakeタスク実行
$rake task_seed:db:seed:category
→投入完了!
■余談
今回seedファイルを3つ作りました。
・db/seeds/category.rb //カテゴリ関連のDB登録データ
・db/seeds/product.rb //product関連のDB登録データ
・db/seeds/user.rb //ユーザ関連のDB登録データ
上記記載だと、自動的にファイル名を探してrakeタスクに3つとも登録されます。
$rake -T
-----------------
rake task_seed:db:seed:category # Load the seed data from db/seeds/category.rb
rake task_seed:db:seed:product # Load the seed data from db/seeds/product.rb
rake task_seed:db:seed:user # Load the seed data from db/seeds/user.rb
-----------------
以上です。
まだまだ便利に使えそうだけど勉強中です🙇♀️
参考にさせていただきました