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.

Source | Google | Stack overflow

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 branch

git checkout -b -your-name--update-docs-ActiveSupport--Callbacks--ClassMethods-set_callback-for-pr


# Commit to git

git 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 request

gem 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!