mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
4e646bb281
Fixes #39976 Prior to this commit it was possible to pass a single argument block to `ActiveSupport::Notifications.subscribe`, rather than 5 separate arguments: ```rb ActiveSupport::Notifications.subscribe('some_event') do |event| puts "Reacting to #{event.name}" end ``` But it was not possible to do the same with a lambda, since the lambda parameter is a required (`:req`) parameter, but we were checking only for an optional (`:opt`) parameter. ```rb listener = ->(event) do puts "Reacting to #{event.name}" end ActiveSupport::Notifications.subscribe('some_event', &listener) ``` It was also not possible to do this with a custom callable object, since the custom callable does not respond directly to `:parameters` (although it's `:call` method object does). ```rb class CustomListener def call(event) puts "Reacting to #{event.name}" end end ActiveSupport::Notifications.subscribe('some_event', CustomListener.new) ``` Prior to this commit these examples would have raised `ArgumentError: wrong number of arguments (given 5, expected 1)`. With this commit the single argument lambda and custom callable work like the single argument block. |
||
---|---|---|
.. | ||
active_support | ||
active_support.rb |