前提
Foo.bar
というメソッドが Time型 の引数を取ると仮定します。すなわち、Foo.bar(Time.now)
みたいな感じです。
runner で書く
whenever で runner
を用いて書くと、上記のメソッドを実行する場合は例えば以下のようになるかと思います。
every '00 18 * * *' do runner 'Foo.bar(Time.now)' end
これはこれでよいです。しかし、引数が長くなったらどうでしょうか。
たとえば引数に Time.now - ((60 * 60 * 24) * 90)
を与えたい場合はどうするかです。もちろん runner 'Foo.bar(Time.now - ((60 * 60 * 24) * 90))'
と書けばオッケーなんですが、可読性が低いです。
結論
要は cron なので、命令を連結します。
every '00 18 * * *' do runner 'my_time = Time.now - ((60 * 60 * 24) * 90); Foo.bar(my_time)' end
補足
cron の性質から言うと、そもそもごちゃごちゃした引数を用いるのは設計上よくないという気もしますが、こういう場合もきっとあるかと思います。