Class: Fairy::BScript

Inherits:
Object
  • Object
show all
Defined in:
lib/fairy/share/block-source.rb

Instance Method Summary collapse

Constructor Details

#initialize(block_source, context, exception_handler) ⇒ BScript

Returns a new instance of BScript.



23
24
25
26
27
# File 'lib/fairy/share/block-source.rb', line 23

def initialize(block_source, context, exception_handler)
  @block_source = block_source.dc_deep_copy
  @context = context
  @exception_handler = exception_handler
end

Instance Method Details

#evaluateObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fairy/share/block-source.rb', line 29

def evaluate
  match = /^(.*):([0-9]+)/.match(@block_source.backtrace.first)

  begin
	$stdout.replace_stdout do
	  eval(@block_source.source, @context.bind, match[1], match[2].to_i)
	end
  rescue Exception
	Log::warn(self) do |sio|
	  sio.puts "Warn: Exception raised:"
	  sio.puts $!
	  for l in $@
 sio.puts "\t#{l}"
	  end
	end
	bt = $!.backtrace
	bt = bt.select{|l| /fairy.*(share|job|backend|node|processor|controller)|deep-connect|__FORWARDABLE__|bin.*processor/ !~ l} unless CONF.DEBUG_FULL_BACKTRACE
	if bt.first
	  bt.first.sub!("bind", @block_source.caller_method)
	end
	bt.push *@block_source.backtrace.dc_deep_copy
	$!.set_backtrace(bt)
	@exception_handler.handle_exception($!)
  end
end