class Coque::Rb
Constants
- NOOP
Attributes
block[R]
post_block[R]
pre_block[R]
Public Class Methods
new(context = Context.new, &block)
click to toggle source
# File lib/coque/rb.rb, line 5 def initialize(context = Context.new, &block) if block_given? @block = block else @block = NOOP end @pre_block = nil @post_block = nil @context = context end
Public Instance Methods
clone()
click to toggle source
# File lib/coque/rb.rb, line 16 def clone self.class.new(context, &block).pre(&pre_block).post(&post_block) end
get_result()
click to toggle source
# File lib/coque/rb.rb, line 34 def get_result stdin, stdoutr, stdoutw = get_default_fds pid = fork do STDOUT.reopen(stdoutw) Dir.chdir(context.dir) if context.disinherits_env? ENV.clear end context.env.each do |k,v| ENV[k] = v end @pre_block.call if @pre_block stdin.each_line(&@block) @post_block.call if @post_block end stdoutw.close Result.new(pid, stdoutr) end
post(&block)
click to toggle source
# File lib/coque/rb.rb, line 27 def post(&block) if block_given? @post_block = block end self end
pre(&block)
click to toggle source
# File lib/coque/rb.rb, line 20 def pre(&block) if block_given? @pre_block = block end self end