2016/05/21分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Fix logging edge case where if an attribute was of the binary type and was provided as a Hash.
- Add AR::TransactionSerializationError for transaction serialization failures or deadlocks
Merge pull request #25041 from maclover7/jm-actionview
actionview/lib/action_view/lookup_context.rb
の修正です。
DetailsKey.get?
メソッドでdetails keyを管理するのに、DetailsKey
クラスのインスタンスを生成し、DetailsKey
を経由して値を管理していたのを、インスタンスを作成せず値を管理するよう修正しています。
Make sure the cache is always populated
actionpack/lib/abstract_controller/base.rb
、
actionview/lib/action_view/test_case.rb
の修正です。
controller_path
メソッドでanonymous(nameがnil)だった場合、親クラスのcontroller_path
を取得するよう修正しています。
controller_path
でnilが返ってしまうと、cacheの生成が行われないので、それを避ける為ですかねえ。
が、既存のテストが壊れてしまった為、後ほどrevertされています。
Add more test coverage to layouts
actionview/test/actionpack/abstract/layouts_test.rb
の修正です。
layoutにfalse
を指定した場合、layoutにブロックを渡す、かつ、そのブロックがfalseを返した場合等、layout関連処理のテストを追加しています。
Merge pull request #24984 from kamipo/remove_magic_comment_in_schema.rb
activerecord/lib/active_record/schema_dumper.rb
の修正です。
schema.rb
を生成する際、encodingに関するマジックコメントを記載しないよう修正しています。
Rails 5ではRuby 2.2以上をサポートする為、との事なのですが、これ明示的にencodingを指定した場合、ちょっと不味かったりするんですかねえ。
Revert "Make sure the cache is always populated"
controller_path
メソッドでanonymous(nameがnil)だった場合、親クラスのcontroller_path
を取得するよう修正した対応をrevertしています。テストが壊れてしまった為。
Merge pull request #24958 from maclover7/fix-24955
activerecord/lib/active_record/log_subscriber.rb
の修正です。
binary型を使用している、かつ、そのattributeにHashを指定し値を保存しようとした場合に、NoMethodError
がraiseされてしまうバグがあったのを修正しています。
def render_bind(attribute) value = if attribute.type.binary? && attribute.value - "<#{attribute.value.bytesize} bytes of binary data>" + if attribute.value.is_a?(Hash) + "<#{attribute.value_for_database.to_s.bytesize} bytes of binary data>" + else + "<#{attribute.value.bytesize} bytes of binary data>" + end
データ保存時にそのサイズをログに出力するようになっているのですが、Hash
にはbytesize
メソッドが無い為、NoMethodError
になってしまっていたようです。
add #23980 to release notes [ci skip]
rails guideのRuby on Rails 5.0 Release Notes
の修正です。
path parametersに:controller
と:action
を使用した際にdeprecateメッセージが表示されるよう対応した、Deprecate :controller and :action path parameters by pixeltrix · Pull Request #23980 · rails/railsの対応について、release notesにentryを追加しています。
actionview/lib/action_view/helpers/form_tag_helper.rb
の修正です。
select_tag
メソッドに、include_blank
オプションを指定した場合に生成されるoptionタグに、label属性を生成するよう修正しています。
before
<option value=""></option>
after
<option value="" label=" "></option>
label属性無しかつvalueを空にする、というのはHTML5の規約上NGな為、label属性を生成するようにしたとの事です。へー。
参考:
Merge pull request #24918 from prathamesh-sonpatki/cable-assets
Action Cable / railties の修正です。
javascript engineにCoffeeScriptではなくJavaScriptを使用している場合に、Action Cableのgeneratorが生成するchannel用のファイルもCoffeeScriptではなくJavaScriptのファイルを生成するよう修正しています。
Merge pull request #24732 from y-yagi/update_record_specified_in_the_key
activerecord/lib/active_record/internal_metadata.rb
の修正です。
InternalMetadata
の値を更新する際に、first_or_initialize
を使用していたのを、find_or_initialize_by
を使用するよう修正しています。
def []=(key, value) - first_or_initialize(key: key).update_attributes!(value: value) + find_or_initialize_by(key: key).update_attributes!(value: value) end
first_or_initialize
だとデータの検索にkeyを使用せず、keyに関係無いデータを更新してしまう場合がある為。
Fix Hash#from_xml with frozen strings (#24718)
activesupport/lib/active_support/xml_mini/rexml.rb
の修正です。
Hash#from_xml
メソッドに、frozen stringsを渡した場合にエラー(IOError
)が発生してしまっていたのを修正しています。
Add CHANGELOG.md reference for #24958 (#25094)
activerecord/CHANGELOG.md
の修正です。
binary型を使用している、かつ、そのattributeにHashを指定し値を保存しようとした場合にNoMethodError
がraiseされてしまうバグがあったのを修正した、対応についてCHANGELOGにentryを追加しています。
activerecord/CHANGELOG.md
の修正です。
entryの対応者の間に空行を追加しています。
Added a shared section to config/secrets.yml that will be loaded for all environments
railties/lib/rails/application.rb
、
railties/lib/rails/generators/rails/app/templates/config/secrets.yml
の修正です。
secrets.ymlに全ての環境で共通で使用出来るkeyを定義出来るよう対応しています。全ての環境で共通で使用出来るkeyを使用したい場合は、shared
セクションに値を定義する必要があります。
# secrets.yml # Shared secrets are available across all environments. shared: api_key: 123
Add AR::TransactionSerializationError for transaction serialization failures or deadlocks
Active Recordの修正です。
transactionがdeadlock(MySQL)になったり、serialization failure(PostgreSQLでtransactionの実行を直列に行うことができない状況になる場合におこるエラー)になったりした場合に使用する為のActiveRecord::TransactionSerializationError
クラスを追加しています。
Use #distinct instead of #uniq in the guides [ci skip] (#25098)
rails guideのActive Record Query Interface
の修正です。
left_outer_joins
メソッドのexampleで、deprecateになったuniq
メソッドの代わりにdistinct
メソッドを使用するよう修正しています。
activerecord/lib/active_record/associations/collection_association.rb
のdocの修正です。
ActiveRecord::Associations::CollectionAssociation
クラスのdocのグラマーの修正を行っています。