#Rails4.2の新機能
Rails4.2から追加される機能について調べているので、そのメモです。適宜修正したりします。
##ActiveJob
まずはActiveJobです。これはdelayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです。使うためには以下のようなコードを追加する必要があります。
ActiveJob::Base.queue_adapter = :delayed_job
上記はキューイングで使うgemに何を使うのかで右側の値が変わります。上の例ではdelayed_jobを使う設定になっています。
そして次にActiveJobのジェネレータを使った~Jobクラスを作成します。
rails g job hello
これをによりapp/jobsディレクトリが作成されて、配下にhello_job.rbが作成されます。この作成されたクラスに若干コードを追加して以下のようにします。
class HellloJob < ActiveJob::Base
queue_as :urgent
def perform(message = 'test')
# Do something later
puts message
end
end
ここまで作成したら、後はキューにセットしている箇所でActiveJobが用意しているメソッドを使うようにするだけです。
例えば以下のように書きます。
HelloJob.perform_later 'ほげほげほげ'
HelloJob.set(wait: 1.minute).perform_later 'うごうぐぐ'
このperform_laterメソッドがActiveJobが用意しているキューイング処理を行うメソッドです。でsetメソッドで何分後に時刻するかなど設定します。
4.2からはdelayed_jobやresqueを直接使うのではなくActiveJobを使うのがベストなやり方ということになるのでしょうかね。まだちょっとこれを使うメリットが分かっていないのですが・・。
##AdequateRecord
これはActiveRecordのfind_byやfindメソッドでRelationオブジェクトのキャッシュをすることで処理スピードを早くするというものらしい。
##Action Mailer
アクションメールについてもリリース事項があります。deliver_nowメソッドやdeliver_laterメソッドが追加されました。
Notifier.welcome(User.first).deliver_now!
Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
##その他
Web Consoleなど他の機能はまた後日