2016/01/30分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Don't recommend using ActiveRecord::Base[]
activerecord/lib/active_record/base.rb
のdocの修正です。
ActiveRecord::Base
クラスのdoc内、default accessorsについて説明している箇所で、attributeの指定にActiveRecord::Base[]
も指定出来る旨説明していた箇所を削除しています。
ActiveRecord::Base[]
は処理が重く、セマンティックも奇妙であり、おすすめすべきではない、という事で削除したようです。
Revert "Revert "Eliminate the EventMachine dependency""
Action CableでEventMacineを使用しないよう対応したコミットをrevertしたコミット(Revert "Eliminate the EventMachine dependency" · rails/rails@9ea7aa8)をrevertしています。という訳で再度EventMachineを使用していないようになっています。
問題があった箇所については、以降のコミットで対応されています。
actioncable/lib/action_cable/connection/base.rb
、
actioncable/lib/action_cable/connection/client_socket.rb
の修正です。
ActionCable::Connection::Base#on_close
の引数にreason, codeを追加しています。
Synchronize the lazy setters in Server
Action Cableの修正です。
ActionCableのServerのsetterをMutexを使用してスレッドセーフになるよう修正しています。
Add a couple of tests that connect with a WS client
Action Cableのテストの修正です。
WebSocketのクライアントを使用してのテストを追加しています。WebSocketのライブラリにはfaye/faye-websocket-ruby: Standards-compliant WebSocket client and serverを使用しています。
Handle more IO errors (especially, ECONNRESET)
actioncable/lib/action_cable/connection/stream_event_loop.rb
の修正です。
event loopで、ECONNRESET(クライアントからの切断)が発生した場合の対応を追加しています。
Be more patient while gathering the expected responses
actioncable/test/client_test.rb
の修正です。
clientでメッセージを読み取る歳、期待するメッセージサイズ分読み取るまでwaitするよう修正しています。
Reduce the client count, in hope of a more consistent test
actioncable/test/client_test.rb
の修正です。
テストで使用するクライアントの数を20から10に減らしています。テストを安定させる為、ですかねえ。
Keep the socket reference after close
actioncable/test/client_test.rb
の修正です。
puma serverを起動するメソッドの後処理で、サーバーの停止を行う際に、サーバーのインスタンスが生成済みかどうかのチェックを行うよう修正しています。同様に、スレッドの終了処理を待つ際にもスレッドのインスタンスが生成済みかどうかチェックを行うようにしています。
actioncable/README.md
の修正です。
不要なloggingファイルのrequieを削除しています。
Intervene on change_table as well as create_table
activerecord/lib/active_record/migration/compatibility.rb
の修正です。
create_table
メソッド同様に、change_table
メソッドでもmigrationのcompatibility用メソッドを実行するよう対応しています。
Don't bother stopping EM between tests
actioncable/test/client_test.rb
の修正です。
テストの度にEventMachine
の起動 / 停止を行っていたのを、必要に応じて起動だけを行い、停止は行わないよう修正しています。
Add additional documentation on Headers#[] [ci skip]
actionpack/lib/action_dispatch/http/headers.rb
のdocの修正です。
Headers#[]
メソッドのdocに、headerに複数の値を指定した場合のexampleを追加、及びダッシュ(-
)とアンダースコア(_
)はどちらもアンダースコアに変換される旨説明を追加しています。
# GET / HTTP/1.1 # ... # User-Agent: curl/7.43.0 # X_Custom_Header: token headers["X_Custom_Header"] # => nil headers["X-Custom-Header"] # => "token"
actioncable/test/client_test.rb
の修正です。
テスト内で、クライアントのclose処理にclose!
を使用していたのをclose
を使用するよう修正しています。
コミットログ見る限り、Travisでの実行時に何か問題があった為、な感じなんですかねえ。
Merge pull request #23317 from rfmanuel/after-bundle-in-rails-plugin-template
railties/lib/rails/generators/rails/plugin/plugin_generator.rb
の修正です。
Rails plugin templateにafter_bundle
callbackを追加しています。名前の通りで、bundle install
実行後に行う処理を定義する事が出来ます。
remove unused variable from render test
actionpack/test/controller/render_test.rb
の修正です。
renderのテストから、使用していないresponse
変数を削除しています。
actionpack/lib/action_dispatch/testing/test_process.rb
の修正です。
使用していないactive_support/core_ext/hash/indifferent_access
のrequireを削除しています。
Warn if AR.primary_key
is called for a table who has composite primary key
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
の修正です。
primary_key
メソッドにcomposite primary keyを使用しているテーブルを指定した場合に、Railsではcomposite primary keyをサポートしていない旨ワーニングメッセージを出力するよう修正しています。
activerecord/lib/active_record/connection_adapters/postgresql/oid/money.rb
、
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
の修正です。
OID::Money.precision
メソッドのリファクタリングを行っています。
元々、PostgresSQL 8.2以下用のコードがあったのですが、Rails 5ではPostgreSQL 9.1以上のみサポートする方針らしく、PostgresSQL 8.2以下用のコードは削除しています。
Explicitly define columns
method as an interface
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
の修正です。
ActiveRecord::ConnectionAdapters::SchemaStatements#columns
メソッドで、他のメソッド同様NotImplementedError
エラーをraiseするよう修正しています。
Refactor column_exists?
in SchemaStatements
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
の修正です。
SchemaStatements#column_exists?
メソッドのリファクタリングを行っています。
column_name = column_name.to_s - columns(table_name).any?{ |c| c.name == column_name && - (!type || c.type == type) && - (!options.key?(:limit) || c.limit == options[:limit]) && - (!options.key?(:precision) || c.precision == options[:precision]) && - (!options.key?(:scale) || c.scale == options[:scale]) && - (!options.key?(:default) || c.default == options[:default]) && - (!options.key?(:null) || c.null == options[:null]) } + checks = [] + checks << lambda { |c| c.name == column_name } + checks << lambda { |c| c.type == type } if type + [:limit, :precision, :scale, :default, :null].each do |attr| + checks << lambda { |c| c.send(attr) == options[attr] } if options.key?(attr) + end + + columns(table_name).any? { |c| checks.all? { |check| check[c] } }
SchemaStatements#index_exists?
メソッドと同じような実装となるようリファクタリングしたようです。
Make SchemaMigration.drop_table
to one SQL
activerecord/lib/active_record/schema_migration.rb
の修正です。
元々明示的にindexの削除をしてからtableをdropしていたSchemaMigration.drop_table
メソッドを、tableのdrop処理のみ行うよう修正しています。table dropするとindexも自動で削除される為。
remove unnecessary gsub for action_cable_meta_tag
railties/lib/rails/generators/rails/app/app_generator.rb
の修正です。
skip_action_cable
オプションを指定した場合に、application.html.erb
からaction_cable_meta_tag
メソッドの呼び出しを削除する処理があったのを、削除しています。
そもそもapplication.html.erb
テンプレートの方で、skip_action_cable
オプションを指定した場合にaction_cable_meta_tag
メソッドを呼び出さないようにしており、別途削除処理を行う必要は無い為。
Handle response_body= when body is nil
actionpack/lib/action_controller/metal.rb
の修正です。
Metal#response_body=
メソッドがbodyがnilだった場合にエラーで落ちてしまっていたのを、正しく値を返すよう修正しています。