34
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails4.2の新機能について

Last updated at Posted at 2014-09-17

#Rails4.2の新機能
Rails4.2から追加される機能について調べているので、そのメモです。適宜修正したりします。

##ActiveJob
まずはActiveJobです。これはdelayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです。使うためには以下のようなコードを追加する必要があります。

config/initialize/active_job_setting.rb
ActiveJob::Base.queue_adapter = :delayed_job

上記はキューイングで使うgemに何を使うのかで右側の値が変わります。上の例ではdelayed_jobを使う設定になっています。
そして次にActiveJobのジェネレータを使った~Jobクラスを作成します。

rails g job hello

これをによりapp/jobsディレクトリが作成されて、配下にhello_job.rbが作成されます。この作成されたクラスに若干コードを追加して以下のようにします。

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など他の機能はまた後日

34
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?