Railsでrakeタスクを作り、実行する手順
まず、適当なRailsアプリを作る。そしてコマンドラインで以下を実行する。
#適当なタスクを生成する $ rails g task task_sample
生成されたファイルを見るとネームスペースができており、この中にタスクを実装する。
namespace :task_sample do ~ end
サンプルタスクを書く。
namespace :task_sample do desc "タスクの説明をここに書く" task :sample do puts "ワイやで!" end end
タスクを実行するコマンドは、以下で確認できる。
#使えるRailsコマンドを一覧する $ rails -T #いろいろズラッとコマンドが並ぶ #さきほど作ったタスクが表示されている rails task_sample:sample # タスクの説明をここに書く
実行する。
$ rails task_sample:sample ワイやで!
タスクが実行できた。
DBのデータを使って処理をしたい場合
:environment
を追加する。
namespace :task_sample do desc "タスクの説明をここに書く" task :sample do puts "ワイやで!" end #追記 desc "DBに接続する場合" task user_model: :environment do User.find_each do |user| puts "#{user.name}やで!" end end end
ただし、DBのデータを使って処理をしたいケースは多々ある。いちいち:environment
と書くのは面倒。
そんな場合、require "#{Rails.root}/config/environment"
を記述することで、いちいち:environment
を書かなくて済む。
#追記 require "#{Rails.root}/config/environment" namespace :task_sample do desc "タスクの説明をここに書く" task :sample do puts "ワイやで!" end #:environmentは削除 desc "DBに接続する場合" task :user_model do User.find_each do |user| puts "#{user.name}やで!" end end end
結果。
$ rails task_sample:user_model username-1やで! username-2やで! ~ ~
ワッショイ💪