Railsでのrakeタスクの作り方。
便利なのねー。Rails。最近便利さにどんどん気がついていく。個人的に重宝しているtask。その作り方の備忘録です。
taskの作成方法
簡単。コマンド一つ。
$ rails g task sample Running via Spring preloader in process 879 create lib/tasks/sample.rake
これは、「sampleという名前のタスクを作成」という意味になります。これだけです。上記コマンドを実行すると lib/tasks/sample.rake
というファイルが出来上がっているかと思います。このファイルの中に実際のタスク(処理)内容を書いていくことになります。
.rakeファイルの中身
作ったばかりの時はnamespacesしか定義されていません。
namespace :sample do end
処理を書く前に幾つかのお作法的に定義する必要があるものがあります。
desc ・・・ taskの説明。rake -vT
などで登録taskを表示させた時の説明文。必須らしい。
実際の処理部分は task [コマンド名] do [処理] end
という感じで、コマンド名を記載してあげる必要あり。コマンド名っていう言い方が適切かどうかは不明ですorz間違っていたらご指摘を。
例えば以下のように書いた場合。
namespace :sample do desc "サンプルタスク" task :hello do puts "Hello!!!!!" end end
上記のtaskを呼び出す場合はコマンドラインで以下のように打ちます。
$ rake sample:hello
これでHello!!!!!!ってのが表示されます。puts〜〜〜〜ってところを実際にごにょごにょ書いていくことになるかと。
モデルを使用する場合
railsを使っていることの醍醐味ともいうべき、モデルの使用。このままではtaskのなかでモデルが使用できないので、モデルを使用する場合は環境情報をつけて上げる必要があります。具体的には以下。
namespace :sample do desc "サンプルタスク" task :hello => :environment do puts "Hello!!!!!" end end
=> environment
ってのを追加しています。これで、このtaskの中で自分で定義したモデルなどが使えるようになります。
終わりに
モデル定義しておけばActiveRecordでDB操作簡単だし、それをTaskとして定義してあげれば今までコマンドでやっていたものを代替することが出来る。そしてファイルもまとまる。
まぁそのまとめ方間違えるととんでもないことになりそうですが、でも1つのRubyファイルをごにょごにょ調整するよりか全然楽な気がする。
MVCのVが全く無いことばかりやってるなぁww
以下のページを参考にさせてもらいました。ありがとうございます。