なるようになるブログ

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

rails commit log流し読み(2015/01/23)

2015/01/23分のコミットです。

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


Speed up normalize_keys by removing dup step.

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

引数のenv(Hashクラスのデータ)のkeyをupcaseして、新しいHashを作成する、という処理を、envをdupして行っていたのを、transform_keysメソッドを使用する形に修正しています。transform_keysを使用した場合の方が28%程早いとの事。

PRより。

require 'benchmark/ips'
require 'active_support/core_ext/hash/keys'

env = {
  http_host: 'example.org',
  https: false,
  method: 'get',
  script_name: '',
  'rack.input' => ''
}

Benchmark.ips do |x|
  x.report('dup + bang transform') {
    env.dup.tap do |new_env|
      new_env.keys.each do |key|
        if key.is_a?(Symbol)
          new_env[key.to_s.upcase] = new_env.delete(key)
        end
      end
    end
  }

  x.report('transform_keys') {
    env.transform_keys do |key|
      key.is_a?(Symbol) ? key.to_s.upcase : key
    end
  }

  x.compare!
end
Calculating -------------------------------------
dup + bang transform     7.239k i/100ms
      transform_keys     8.800k i/100ms
-------------------------------------------------
dup + bang transform     88.735k (± 3.4%) i/s -    448.818k
      transform_keys    113.369k (± 3.6%) i/s -    572.000k

Comparison:
      transform_keys:   113369.5 i/s
dup + bang transform:    88735.4 i/s - 1.28x slower

fix wording of CSS manifest instructions

railties/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.cssrailties/lib/rails/generators/rails/plugin/templates/rails/stylesheets.cssのdocの修正です。

CSS manifestの説明について、同じ内容を繰り返してた箇所を削除しています。


Use 'public_send' over the 'send' method for object's properties.

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

update_attributetoggleメソッドsendメソッドを使っていたのを、public_sendを使うよう修正しています。objectのプロパティに値を設定する処理で使用していたのですが、プロパティは全てpublicであり、public_sendで問題無い為修正しています。


constants guide: make assumption explicit in an example [closes #18465] [ci skip]

rails guideのAutoloading and Reloading Constantsの修正です。

Moduleをネストした場合のexampleに誤りがあったのを修正しています。