sonic-pi
https://github.com/sonic-pi-net/sonic-pi
C++
Code. Music. Live.
ActiveSupport::Callbacks::ClassMethods#set_callback
Install a callback for the given event.
set_callback :save, :before, :before_meth
set_callback :save, :after, :after_meth, if: :condition
set_callback :save, :around, ->(r, &block) { stuff; result = block.call; stuff }
The second arguments indicates whether the callback is to be run +:before+,
+:after+, or +:around+ the event. If omitted, +:before+ is assumed. This
means the first example above can also be written as:
set_callback :save, :before_meth
The callback can be specified as a symbol naming an instance method; as a
proc, lambda, or block; as a string to be instance evaluated; or as an
object that responds to a certain method determined by the <tt>:scope</tt>
argument to +define_callbacks+.
If a proc, lambda, or block is given, its body is evaluated in the context
of the current object. It can also optionally accept the current object as
an argument.
Before and around callbacks are called in the order that they are set;
after callbacks are called in the reverse order.
Around callbacks can access the return value from the event, if it
wasn't halted, from the +yield+ call.
===== Options
* <tt>:if</tt> - A symbol naming an instance method or a proc; the
callback will be called only when it returns a +true+ value.
* <tt>:unless</tt> - A symbol naming an instance method or a proc; the
callback will be called only when it returns a +false+ value.
* <tt>:prepend</tt> - If +true+, the callback will be prepended to the
existing chain rather than appended.Edit
git clone [email protected]:sonic-pi-net/sonic-pi.git
cd sonic-pi
open app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/callbacks.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-ActiveSupport--Callbacks--ClassMethods-set_callback-for-pr
# Commit to gitgit add app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/callbacks.rbgit commit -m "better docs for ActiveSupport::Callbacks::ClassMethods#set_callback"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-ActiveSupport--Callbacks--ClassMethods-set_callback-for-pr
hub pull-request
# Celebrate!