rakeとは?
Railsで様々なタスクを実行する際に使用します。Railsをインストールしたら一緒に自動でインストールされます。
バージョンによる記述差異
rakeコマンドはRailsのバージョンによって記述方法が変わってきています。
Rails5.0以降の場合
rakeをrailsに置き換えることが可能です。(例:「rails db:create」等)
Rails4.1以前の場合
rakeをbundule exec rakeに置き換えます。(例:「bundle exec rake db:create」等)
Rakeタスクの一覧を見る。
1 |
rails -T |
自分で定義したタスクや、元から定義されているタスク(「rake db:create」など)も含めて全て表示してくれます。
Rakeタスクの作成
1 |
rails g task hello |
lib/tasks/hello.rakeというファイルが生成されます。
1 2 3 4 5 6 |
namespace :hello do desc "Hello World" task say_hello: :environment do puts "Hello World" end end |
上記ファイルであれば以下のように実行できます。
1 |
rails hello:say_hello |
モデルを操作する
普通にRailsアプリ内に定義したmodelとかにもアクセスできます。
1 2 3 4 5 6 7 |
namespace :user do desc "ユーザー情報を表示する" task show: :environment do user = Users.find(1) puts user.id end end |
下記コマンドで実行できます。
1 |
docker-compose exec web rails user:show |
DB関連
rake db:create
DBがまだ存在しない場合に新規に作成してくれます。
rake db:migrate
まだ未実行のマイグレーションファイルの内容を実行します。
rake db:rollback
マイグレーションのロールバックをさせることができます。
rake db:seed
seedデータの投入
自作Rakeタスクのユースケース
何かしらのデータ連携
例えば、メールの一斉送信などです。
データ更新
画面からでは時間のかかる一括処理を実行する場合など。
定期的に実行したい場合
wheneverというgemを使うのが一般的です。Railsとは別プロセスでバックグラウンドでcronを動かします。
この記事へのコメントはありません。