It's a good practice to scope patches using Refinements, but sometimes it's nice to load it globally (for example in development, or testing).
Say for example you want to start a console, require your library, and then have the patched methods available in the global scope. You couldn't do this with refinements because
using needs to be called in a class/module definition. But it's possible to write the code in such a way that it's dual purpose:
module Patch def patched?; true; end refine String do include Patch end end # globally String.include Patch "".patched? # => true # refinement class LoadPatch using Patch "".patched? # => true end