lib/dsl_block/executor.rb in dsl_block-1.0.0 vs lib/dsl_block/executor.rb in dsl_block-2.0.0
- old
+ new
@@ -1,37 +1,37 @@
-class DslBlock
-
- # The Executor class is designed to run a block of code in isolation
- # for the DslBlock class. By running it in a 'sandbox', the block
- # of code cannot inadvertently access protected and private methods
- # within the DslBlock without explicate declaration by the DslBlock.
- # To the user, it will appear that the block runs directly in the
- # DslBlock but in a partly restricted manner if they care to investigate.
- # In this fashion, executor is effectively a transparent proxy.
- class Executor < BasicObject
-
- def initialize(dsl_block)
- @dsl_block = dsl_block
- end
-
- def method_missing(method, *args, &block)
- # If the dsl block lists the method as a callable command
- if @dsl_block._commands.include?(method)
- # Attempt to call it
- begin
- @dsl_block.send(method, *args, &block)
- rescue => e
- # If there is any type of error, remove ourselves from the callstack to reduce confusion.
- e.set_backtrace(::Kernel.caller.select { |x| !x.include?(__FILE__)})
- ::Kernel.raise e
- end
- else
- # Otherwise raise a no method error as if the method does not really exist, regardless of reality.
- name_error = ::NameError.new("undefined local variable or method `#{method}' for #{self.inspect}")
- name_error.set_backtrace(::Kernel.caller.select { |x| !x.include?(__FILE__)})
- ::Kernel::raise name_error
- end
- end
-
- end
-
-end
+class DslBlock
+
+ # The Executor class is designed to run a block of code in isolation
+ # for the DslBlock class. By running it in a 'sandbox', the block
+ # of code cannot inadvertently access protected and private methods
+ # within the DslBlock without explicate declaration by the DslBlock.
+ # To the user, it will appear that the block runs directly in the
+ # DslBlock but in a partly restricted manner if they care to investigate.
+ # In this fashion, executor is effectively a transparent proxy.
+ class Executor < BasicObject
+
+ def initialize(dsl_block)
+ @dsl_block = dsl_block
+ end
+
+ def method_missing(method, *args, &block)
+ # If the dsl block lists the method as a callable command
+ if @dsl_block._commands.include?(method)
+ # Attempt to call it
+ begin
+ @dsl_block.send(method, *args, &block)
+ rescue => e
+ # If there is any type of error, remove ourselves from the callstack to reduce confusion.
+ e.set_backtrace(::Kernel.caller.select { |x| !x.include?(__FILE__)})
+ ::Kernel.raise e
+ end
+ else
+ # Otherwise raise a no method error as if the method does not really exist, regardless of reality.
+ name_error = ::NameError.new("undefined local variable or method `#{method}' for #{self.inspect}")
+ name_error.set_backtrace(::Kernel.caller.select { |x| !x.include?(__FILE__)})
+ ::Kernel::raise name_error
+ end
+ end
+
+ end
+
+end