Rails3 runnerを利用してでバッチプログラムを実行するサンプル
Rails3でバッチプログラムを実行する方法は公式ガイドでは以下のように記載されています
http://guides.rubyonrails.org/command_line.html#rails-runner
$ rails runner "Model.long_running_method"
runnerの使い方に付いてぐぐってみましたがRailsの構成まで含めたいい説明ページが無かったので、まとめてみました。
サンプルについて
今回のサンプルでは、認証にdeviseを利用したアプリケーションで、ユーザの招待を一度に行うバッチプログラムを作成しました。
ユーザ一覧はCSVファイルから読み込みます。
deviseの基本的な機能と招待の仕組みの追加に付いては以下の記事を参考にしてください。
プログラムの置き場所の準備
今回バッチプログラムはlib/tasksというディレクトリに配置したいと思います。
lib以下のファイルを読み込むようにconfig/application.rbに以下を追加します。
config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"]
参考:http://hemju.com/2010/09/22/rails-3-quicktip-autoload-lib-directory-including-all-subdirectories/
lib/tasksディレクトリにinvitation_task.rbを作成して、以下のようにクラスを定義しました。
class Tasks::InvitationTask end