なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2014/12/13)

2014/12/13分のコミットです。

CHANGELOGへの追加はありませんでした。


Fix default queue name prefix delimiter

rails guideのActive Job Basicsの修正です。

デフォルトのキュー名のデリミタについての説明の箇所で、エスケープが足りておらずアンダースコアが空として表示されてしまっていたので、エスケープを追加しています。

-The default queue name prefix delimiter is '_'.  This can be changed by setting
+The default queue name prefix delimiter is '\_'.  This can be changed by setting

Align the GemfileEntry API with stable branches

railties/lib/rails/generators/app_base.rbの修正です。

Gemfileを生成する際、githubを指定する為のメソッドとして、GemfileEntry.githubというメソッドがあるのですが、 このメソッドにブランチ名を指定出来るよう修正しています。


Rails master requires arel master

railties/lib/rails/generators/app_base.rbの修正です。

dev / edge を使用している場合、arelのmasterを使用するよう修正しています。


New applications should use sass-rails 5.0

railties/lib/rails/generators/app_base.rbの修正です。

sass-rails 5.0を使用するよう修正しています。


Pass through the prepend option to AS::Callback

activemodel/lib/active_model/validations.rbの修正です。

ActiveModelのvalidateメソッドのオプションに、:prependを指定出来るよう修正しています。

このコミットでオプションのチェックを行うようになり、 railsの中で使用していないオプションはエラーになるようになったのですが、 どうも、:prependというオプションを使用しているユーザがいた為、下位互換の為に、許容出来るようにしたようです。

何故:prependが必要なのかがissueには説明無いんですよねえ。


Mention that Action Mailer methods are not deferred [ci skip]

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

Action Mailerの項を追加しています。

Active Jobの導入に伴い、Action Mailerの挙動も変わってしまっているので、その旨説明を追加しています。

以下例。

class Notifier < ActionMailer::Base
  def notify(user, ...)
    puts "Called"
    mail(to: user.email, ...)
  end
end

mail = Notifier.notify(user, ...) # Notifier#notify はまだ呼ばれない
mail = mail.deliver_now           # ここで "Called"が表示される

以前の挙動では、mailerのメソッドが呼ばれた時点で処理が行われたのですが、Rails 4.2からはdeliver_now又はdeliver_laterが呼ばれるまで処理が行われなくなりました。

通常は問題無いのですが、mailerでないメソッドから処理を呼ぼうとすると、問題が起きます。

class TestMailer < ActionMailer::Base
  def msg
    mail to:"foo@bar.com",
         subject:"asd",
         from: "a@a.com",
         body: "test"
  end
  def msg_and_deliver
    msg.deliver
  end
end

TestMailer.msg.deliver     # => OK
TestMailer.msg_and_deliver # => NG

バッチ処理等でまとめてメールを投げる、というケースなどでちょと対応が必要そうですねえ。


Merge pull request #18006 from sikachu/add-params-to_unsafe_h

actionpack/lib/action_controller/metal/strong_parameters.rbの修正です。

ActionController::Parameters#to_unsafe_hメソッドを追加しています。

ActionController::Parameters#to_hはsafe Hash(permitted済みのHash)を返すのに対して、こちらは全てのHashを返すためのメソッド、との事です。


redis 3.2.0 doesn't allow tcp protocol anymore

activejob/test/support/integration/adapters/resque.rbの修正です。

redisとのコネクションを接続している箇所のプロトコルを"tcp" -> "redis"に修正しています。

redis 3.2.0からはtcpでの接続を許容していない為との事です。


[guides] Fix method name inconsistency in a mailer example

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

先に追加したdocのメソッドに誤りがあったのを修正しています。


Pass connection rather than alias_tracker

activerecord/lib/active_record/associations/association_scope.rbの修正です。

AssociationScopeクラスの各メソッドの引数をalias_tracker から connectionに修正しています。

元々はalias_trackerからconnectionを取得するようにしていたのですが、connectionしか使用してないので、 引数自体を修正したとの事です。