2016/01/29分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Reworked ActiveRecord::Relation#last to always use SQL
activerecord/lib/active_record/relation/finder_methods.rb
の修正です。
ActiveRecord::Relation#last
のリファクタリングを行っています。
- relationがロード済みの場合、常にSQLは発行せずRubyでのみ処理を行う
- relationがロードされていない場合、常にSQLを発行する
- 自動的にreverse出来ないようなSQLを発行するのはdeprecateになった(Rails 5.1では
ActiveRecord::IrreversibleOrderError
がthrowされる)
CHANGELOGより。
Topic.order("title").load.last(3) # before: SELECT ... # after: No SQL Topic.order("title").last # before: SELECT * FROM `topics` # after: SELECT * FROM `topics` ORDER BY `topics`.`title` DESC LIMIT 1 Topic.order("coalesce(author, title)").last # before: SELECT * FROM `topics` # after: Deprecation Warning for irreversible order
Regression test for rendering file from absolute path
actionpack/test/controller/render_test.rb
の修正です。
render
メソッドに絶対パスでファイルを指定した場合に、エラーになる事を確認するテストを追加しています。
Bundle update to fix tests locally
Gemfile.lock
の修正です。
bundle updateを実行し、Gemfile.lock
を更新しています。
Run file.close
before unlinking for travis
actionpack/test/controller/render_test.rb
の修正です。
render
メソッドに絶対パスでファイルを指定した場合にエラーになる事を確認するテストで、テストの後処理でunlink
メソッドでファイルを削除しているのですが、削除を行う前にclose
でファイルをクローズするよう修正しています。
Put "Using Rails for API-only Applications" in table of contents
guides/source/documents.yaml
の修正です。
Rails guideのリストにUsing Rails for API-only Applications
(Rails APIのguide)を追加しています。
Merge pull request #23220 from maclover7/fix-23215
railties/lib/rails/rack/logger.rb
の修正です。
envがdevelopmentだった場合、requestの間に空行が2行追加されていたのを、追加されないよう対応しています。
def call_app(request, env) - # Put some space between requests in development logs. - if development? - logger.debug '' - logger.debug '' - end
Tag the blank log line between dev requests so it's easier to filter … · rails/rails@1a70499 で追加されたもので、filterをしやすする為だったようなのですが、assetのrequestが並列に実行されるようになってしまい、不要な空行が大量に発生する、というような事がおこるようになってしまった為、削除したようです。
convert AcceptList to a regular class
actionpack/lib/action_dispatch/http/mime_type.rb
の修正です。
Mime::Type::AcceptList
クラスの親クラスにArray
を指定していたのをやめています。
外部から実行されるクラスではなく、別にArrayを継承している必要性も無い為、修正したようです。
Mark API guide as work in progress
guides/source/documents.yaml
の修正です。
Using Rails for API-only Applications
guideにwork_in_progress: true
を設定しています。まだレビューが出来てない為、との事です。
rails guideのUsing Rails for API-only Applications
の修正です。
middlewares
を単数形(middleware
)に修正しています。
Remove Rack::Lock from the API guides
rails guideのUsing Rails for API-only Applications
の修正です。
使用しなくなったRack::Lock
についての説明を削除しています。
rails guideのUsing Rails for API-only Applications
の修正です。
グラマーの修正、及び使用しているけど説明が行われてなかったmiddlewareについての説明の追加等を行っています。
speed up accept header parsing a bit.
actionpack/lib/action_dispatch/http/mime_type.rb
の修正です。
paramsのパース処理のリファクタリングを行っています。ちょっと高速化しているとのことです。
コミットログより。
require 'benchmark/ips' require 'action_dispatch/http/mime_type' require 'active_support/all' accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' Benchmark.ips do |x| x.report "omg" do Mime::Type.parse(accept) end end
Before:
[aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 3.181k i/100ms ------------------------------------------------- omg 35.062k (±12.8%) i/s - 174.955k [aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 3.153k i/100ms ------------------------------------------------- omg 33.724k (±12.4%) i/s - 167.109k [aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 3.575k i/100ms ------------------------------------------------- omg 37.251k (±10.4%) i/s - 185.900k
After:
[aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 3.365k i/100ms ------------------------------------------------- omg 40.069k (±16.1%) i/s - 198.535k [aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 4.168k i/100ms ------------------------------------------------- omg 47.596k (± 7.7%) i/s - 237.576k [aaron@TC actionpack (master)]$ be ruby ../x.rb Calculating ------------------------------------- omg 4.282k i/100ms ------------------------------------------------- omg 43.626k (±17.7%) i/s - 209.818k
frozen-string-literal
が指定されているのですが、Railsのコード内で指定されたの始めてな気がします。
Getting Started Guide: Update Ruby version to 2.3.0p0
rails guideのGetting Started with Rails
の修正です。
Installing Rails
の項、ruby -v
で表示されるバージョンの情報をruby 2.2.2p95
からruby 2.3.0p0
に更新しています。
Merge pull request #22800 from dgynn/pr_cache_helper_options
actionview/lib/action_view/helpers/cache_helper.rb
の修正です。
cache_fragment_name
メソッドの引数に任意の値を指定する為の_options
引数を追加しています。
Rails 4系までは普通に使用出来ていたのですが、Fix cache issue when different partials use the same collection · rails/rails@da16745の対応の際に誤って削除されてしまっていたようです。
Merge pull request #23296 from radar/cache-fragment-name-options
actionview/lib/action_view/helpers/cache_helper.rb
の修正です。
Rails 5.0.0.beta1で、cache
メソッドにexpires_in
オプションを指定した場合に正しく動作しないバグがあったのを修正しています。
cache
メソッドからcache_fragment_name
メソッドを呼び出しているのですが、Fix cache issue when different partials use the same collection · rails/rails@da16745でcache_fragment_name
メソッドの引数にキーワード引数を使用するようになった影響で、オプションが正しく渡せなくなっていたのが問題だったようです。キーワード引数を使用するようになったオプションについては、sliceして値を個別に渡すようにして対応しています。
Change number_to_currency behavior for checking negativity
activesupport/lib/active_support/number_helper/number_to_currency_converter.rb
の修正です。
number_to_currency
メソッドで負の値のチェックにto_f.phase
メソッドを使用していたのを、to_f.negative
メソッドを使用するよう修正しています。
to_f.phase
だと"-0.0"の時に正の値になってしまう為、との事です。
-0.0.to_f.negative? #=> false -0.0.to_f.phase #=> 3.14
Float#phase
メソッドを始めて知りました。Class: Float (Ruby 2.3.0)
Merge pull request #23188 from jcoleman/ar-connection-execute-docs-clarification
activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
、
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
のdocの修正です。
DatabaseStatements#execute
メソッドのdocに、メモリの使い方についての説明を追加しています。
Merge pull request #23252 from kamipo/remove_limit_11
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
の修正です。
Rails 2.0ようのコンパチとして残っていた、migrationでinteger型のlimit
オプションに11
を指定した場合にint(11)
にマッピングする処理を削除しています。
Fix broken number_to_currency tests
activesupport/lib/active_support/number_helper/number_to_currency_converter.rb
の修正です。
不足していたactive_support/core_ext/numeric/inquiry
のrequireを追加しています。