rails runner への引数がプログラムへ渡ってしまう
May 19, 2015
Rails のアプリケーション環境でバッチ的に処理を実行したい場合に、rails runnerを使う。
% bin/rails runner your-program.rb
処理にパラメータ(引数)を与えたい場合は、
% bin/rails runner your-program.rb your-parameter
と、通常通り、プログラムファイルの後ろに指定し、プログラム内では、ARGV で取得すればいいのだが、production 環境で実行をする際に、問題が生じてしまった。
% bin/rails runner -e production your-program.rb your-parameter
上記のような指定だと、-e production も your-program.rb に渡ってしまい、ARGV の中に入ってしまう。
これを回避するためには、環境の指定を、下記のようにすればいい。
% RAILS_ENV=production bin/rails runner your-program.rb your-parameter