RailsでオリジナルRakeタスク作成からRSpecテストまで


RailsのRakeタスク作成〜RSpecでのテストまでの流れをまとめました。
できるだけシンプルにまとめたので、Rakeタスクの作成にはじめてトライされる方はぜひご一読ください。

02/13 22:10全体的に説明書きを書き直し


😼 Rakeタスクファイルの作成

次のコマンドを実行すると、Rakeタスク用のファイルがlib/tasksの下に作成されます。
(reportsの部分は任意の名前に変更してください)

rails g task reports

上で生成されたlib/tasks/reports.Rakeに処理を記述。

namespace :reports do
# descの記述は必須
desc "Generate report"

# :environment は モデルにアクセスするのに必須
task :generate => :environment do
# 処理を記述
ReportGenerator.generate
end
end

ここまで完了するとRakeタスクの中にreports:generateが追加されます。

rake -vT
# rake reports:generate # hoge の説明" # <= となっていれば成功< span>

次のコマンドで、作成したreports:generateのRakeタスクを実行できます。

rake reports:generate

🏀 RakeタスクのRSpecを作成

Rakeタスクのテストですが、@netwillnetさんのgem『Rspec で rake タスクをテストする用の gem を作った』で詳解されているgem『rake_shared_context』を使う方法を書いておきます。

この方法は、thoughtbotさんのブログに書かれていたrakeのテスト方法をgem化したものだそうです。こちらも読んでおくと捗ります!

まずはGemfileに以下を追加して、ターミナルでbundle installを実行。

gem 'rake'

# shared_context for rake tasks
gem 'rake_shared_context'

spec/lib/tasks/reports_rake_spec.rbを作成して、テストを記述。

require 'spec_helper'

describe 'reports:generate' do
include_context 'rake'

its(:prerequisites) { should include('environment') }

it 'generates the report' do
ReportGenerator.should_receive(:generate)
subject.invoke
end
end

かなり簡単にRakeタスクのテストができちゃいます!

🎳 参考リンク

🐯 変更来歴

12/12/05 22:00 gem ‘Rake’インストールを追加

12/12/11 12:55 taskのサンプルコード内にコメントを追記

12/12/17 10:45コード内の注意書きを追記

13/12/31 16:20 Rails 4 x Ruby 2.1環境で動作確認

14/02/13 21:20全体的に説明書きを書き直し

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍