/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

rakeタスクの作り方

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

以下のページを参考にさせてもらいました。ありがとうございます。

d.hatena.ne.jp