2014/11/11分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Cache
CollectionAssociation#reader
proxies separately before and after the owner has been saved so that the proxy is not cached without the owner's id. - Add
Table#name
to matchTableDefinition#name
.
Merge pull request #11694 from Empact/association-bind-values-not-updated-on-save
activerecord/lib/active_record/associations/collection_association.rb
の修正です。
CollectionAssociation#reader
メソッドで、ownerがsaveされる前か後かで処理を分けるよう修正しています。
ownerのidが設定されてないのに値がキャッシュされてしまい、update_all
が正常に行われないバグがあった為、対応しています。
以下PRにあったgistから抜粋。
class Firm < ActiveRecord::Base has_many :clients end class Client < ActiveRecord::Base belongs_to :firm end firm = Firm.new firm.clients << Client.create! firm.save! puts "#{firm.clients.count} clients. 1 expected." # => 1 clients. 1 expected. updated_clients = firm.clients.update_all(description: 'Great!') puts "#{updated_clients} clients updated. 1 expected." # => 0 clients updated. 1 expected.
tiny code improvement in sqlite3 adapter:
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
の修正です。
使用していないsupports_add_column?
メソッドの削除、alter出来るかカラムかどうかチェックする為のメソッドの名称をvalid_alter_table_options
->valid_alter_table_type?
に修正を行っています。
remove never called method limited_update_conditions
activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
、
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
の修正です。
使用していないlimited_update_conditions
メソッドを削除しています。
dependencies.rb: keep the decorated #load and #require private [closes #17553]
activesupport/lib/active_support/dependencies.rb
の修正です。
Loadable
moduleに定義されているload
、require
メソッドのアクセス制限をpublic -> privateに修正しています。
本来privateであるべきload
、require
メソッドがpublicに定義されていた為、想定していない挙動を起こしてしまっていたようです。
具体的にはNilClass
で問題になるケースがあったらしく、本来NilClass
のload
メソッドはprivate
なのですが、public
になっていた事により問題が起きていたようです。
# before nil.method(:load).source_location # => ["/home/yaginuma/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/bundler/gems/rails-999a07e3b992/activesupport/lib/active_support/dependencies.rb", 244] # after nil.method(:load).source_location
Merge pull request #16535 from bf4/patch-1 https://github.com/rails/rails/commit/091652cae8465711de3c12697a93c67a9f94576c
initializers/secret_token.rb
に定義したsecret_tokenの値をRails.application.secrets.secret_token
で取得出来るよう対応しています。
Rails 4.1からはsecrets.yml
を使うようになり、値をRails.application.secrets
から取得出来るようになっていたのですが、過去のバージョンからのアップグレードを行う際、
Rails.application.secrets.secret_token
で値を取得出来た方が移行しやすい、との事で対応したようです。
No need to sync config.secret_token and secrets.secret_token
railties/lib/rails/application.rb
の修正です。
上記secret_token
の対応で、secrets.secret_token
が設定されている場合に、config.secret_token
にsecrets.secret_token
の値を設定するよう対応していたのですが、
config.secret_token
に値を設定する処理を削除しています。基本的に、secrets.secret_token
の方の値を参照すれば問題無いからですかねえ。
railties/test/application/configuration_test.rb
の修正です。
テストファイルから不要なスペースの削除を行っています。
Remove unnecessary double space
railties/lib/rails/generators/rails/app/templates/bin/rails
、
railties/lib/rails/generators/rails/app/templates/config.ru
の修正です。
require
行にあった不要なスペースを削除しています。
-require ::File.expand_path('../config/environment', __FILE__) +require ::File.expand_path('../config/environment', __FILE__)
Make FlashHash#key? work with symbol and string
actionpack/lib/action_dispatch/middleware/flash.rb
の修正です。
FlashHash#key?
メソッドの引数にStringを指定した場合も動作するよう修正しています。
Merge pull request #17580 from ccutrer/change_table_name
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
の修正です。
ConnectionAdapters#Table
クラスにname
インスタンス変数を追加しています。name
はテーブル名を保持しています。
動的にtableを作成するgemを作成する際、テーブル名を取得出来る必要があった為、対応したとの事です。