paydici/orchestrated — pull request #3 by jeffweiss (2013-06-19 08:45:04+00:00)
Title: Make Orchestrated::Proxy a better delegate

Prior to this commit, Orchestrated::Proxy was, by default, a subclass of
Object, which gets polluted by ActiveSupport (and other gems in the
Rails framework), resulting in Orchestrated::Proxy#method_missing not
getting called (and thus the Orchestration isn't created) if there is a
name collision between ActiveSupport's Object monkey patching and an
orchestrated method (specifically #load as show in the README example).
This commit alters the base class of Orchestrated::Proxy to BasicObject
as this class is far less polluted by gems and frameworks. Additionally,
Kernel is included for utility methods like `block_given?`.

The README's `Xform#load` will never be call by an orchestration if ActiveRecord is used.

If one is using ActiveRecord, then ActiveSupport is required, which then [will](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies.rb#L722) [inject](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies.rb#L272) [Loadable#load](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies.rb#L220) into every object.

Now, with Loadable#load, [Proxy#method_missing](https://github.com/paydici/orchestrated/blob/master/lib/orchestrated/base.rb#L10) won't called and the orchestration won't be created.