Sha256: 061bd7c423cc4ec785652b9271c5abb5e2f30fc33d88bc2e00ffc941a83084c3
Contents?: true
Size: 1.29 KB
Versions: 33
Compression:
Stored size: 1.29 KB
Contents
module ActiveScaffold # Exposes a +configure+ method that accepts a block and runs all contents of the block in two contexts, # as opposed to the normal one. First, everything gets evaluated as part of the object including Configurable. # Then, as a failover, missing methods and variables are evaluated in the original binding of the block. # # Note that this only works with "barewords". Constants, instance variables, and class variables are not currently supported in both contexts. # # May add the given functionality at both the class and instance level. For the former, use +extend+, and for the latter, use +include+. module Configurable def configure(&configuration_block) return unless configuration_block @configuration_binding = configuration_block.binding.eval('self') ret = instance_exec(self, &configuration_block) @configuration_binding = nil ret end def method_missing(name, *args) if @configuration_binding&.respond_to?(name, true) @configuration_binding.send(name, *args) else super end end def respond_to_missing?(name, include_all = false) if defined? @configuration_binding @configuration_binding&.respond_to?(name, include_all) else super end end end end
Version data entries
33 entries across 33 versions & 1 rubygems