2015/09/15分のコミットです。
CHANGELOGへの追加はありませんでした。
rack_response
should use the status it's given
actionpack/lib/action_dispatch/http/response.rb
の修正です。
rack_response
メソッドで、statusの値のチェックをする際、メソッドの引数のstatus
ではなく、インスタンス変数の@status
の値を使用してしまっていたのを、メソッドの引数のstatus
を使用するよう修正しています。
Merge pull request #21616 from claudiob/fix-21122
activesupport/lib/active_support/callbacks.rb
の修正です。
Callbacks
moduleから不要なメソッドを削除しています。
元々は、callback処理にterminator
オプションが指定されてなかった場合に呼ばれるメソッドだったのですが、Introduce explicit way of halting callback chains by throwing :abort. Deprecate current implicit behavior of halting callback chains by returning false
in apps ported to Rails 5.0. Completely remove that behavior in brand new Rails 5.0 apps の対応でActiveSupport::Callbacks
がdefaultのterminatorを持つようになり、terminatorが設定されてない事が無くなり、該当のメソッドが呼ばれる事はなくなった為、削除したとの事です。
add a lock when allocating the renderer
actionpack/lib/action_controller/metal/rendering.rb
の修正です。
Renderer
クラスのインスタンス生成処理を、mutexでlockするよう修正しています。
controller classは各スレッドで共有される為、レースコンディション対策の為のようです。
initialize @renderer
to avoid ivar warnings
actionpack/lib/action_controller/metal/rendering.rb
の修正です。
先のRenderer
クラスのインスタンス生成処理についての対応で、@renderer
がnilじゃない場合に処理を行うよう対応しているのですが、
@renderer
が明示的に初期化されてなかった為、Rubyのwarningが出てしまっていたので、@renderer
の初期化処理を追加しています。
eagerly allocate the renderer object
actionpack/lib/action_controller/base.rb
、
actionpack/lib/action_controller/metal/rendering.rb
の修正です。
controllerをloadした時点でRenderer
のインスタンスを生成するよう修正しています。
これにより、各controller毎にRenderer
のインスタンスを保持するようになる為、renderer生成時にlock処理が不要となり、先で追加されたmutextのlock処理は削除されています(代わりにcontrollerが全てRenderer
のインスタンスを保持する為、その分のコストは発生するとの事)。
create a new renderer instance on calls to for
actionpack/lib/action_controller/renderer.rb
の修正です。
rendererのインスタンス生成用のメソッド(self.for
、new
、with_defaults
)を追加しています。
+ # Create a new renderer instance for a specific controller class. + def self.for(controller, env = {}, defaults = DEFAULTS) + new(controller, env, defaults) + end + + # Create a new renderer for the same controller but with a new env. + def new(env = {}) + self.class.new controller, env, defaults + end + + # Create a new renderer for the same controller but with new defaults. + def with_defaults(defaults) + self.class.new controller, env, self.defaults.merge(defaults) end
env
の値を変更したRenderer
を生成したいのか、defaults
の値を変更したRenderer
を生成したいのかによって、使い分ける感じですかねえ。
Do not use conditionals at Gemfile
Gemfile
、Gemfile.lock
の修正です。
Windows環境の場合のみ、nokogiri
のバージョンを1.6.7.rc3
以上に指定していたのを、全ての環境で1.6.7.rc3
以上を指定するよう修正しています。
bundle installした環境によりGemfile.lockが変わってしまうのを防ぐため、との事。
actionpack/lib/action_controller/renderer.rb
の修正です。
Renderer
クラスのコンストラクタで、keyのnormalize処理が2回呼ばれてしまっていたのを、1回で済むよう修正しています。
Merge pull request #20897 from lukechesser/guide-fix-for-acceptance-validation
rails guideのActive Record Validations
の修正です。
acceptance validationについて説明している箇所にaccept
オプションについての説明を追加しています。
Bundler tzinfo-data in windows, even first generated new app are Mac
railties/lib/rails/generators/rails/app/templates/Gemfile
の修正です。
rails appで生成されるGemfileに、不要なWindowsチェック処理があったのを削除しています。
Merge pull request #20848 from deivid-rodriguez/fix_undefined_method_error_on_exception
activerecord/lib/active_record/tasks/mysql_database_tasks.rb
の修正です。
MySQLDatabaseTasks#create
メソッドでエラーになり、エラーメッセージを表示する際、存在しないメソッドを使おうとして、undefined method
がおきてしまっていたのを対応しています。
- $stdout.print error.error + $stdout.print error.message
なお、JDBCを使用している際に起こったの事。使われている方いらっしゃるんですねえ。
allocate request objects with the env hash, set routes on the request
actionpack/lib/action_controller/renderer.rb
の修正です。
Renderer#render
メソッドでcontrollerのインスタンスを生成する際、メソッドの中で直接env hashを使用してRequest
オブジェクトを生成し、それをcontrollerに設定するよう修正しています。
env hashを直接参照するのを無くす為に、requestオブジェクトのroutes
メソッド経由でroutes
を設定する為に、Request
オブジェクトを先に生成するようにしたようです。G
fewer direct env manipulations
actionpack/lib/action_controller/metal/request_forgery_protection.rb
、
actionpack/lib/action_dispatch/http/request.rb
の修正です。
env hashに直接値を設定している箇所があったのを、ラッパーメソッド経由で値を設定するよう修正しています。