class Phantomrb::Runner

Public Class Methods

new() click to toggle source
# File lib/phantomrb/runner.rb, line 5
def initialize
  config = Phantomrb.configuration
  @command = config.options.reduce(config.executable) do |memo, (key, value)|
    "#{memo} --#{key}=#{value}"
  end
end

Public Instance Methods

run(script, *arguments, &block) click to toggle source
# File lib/phantomrb/runner.rb, line 12
def run(script, *arguments, &block)
  command_line = "#{@command} #{full_script_path(script)} #{arguments.join(' ')}"
  begin
    process = IO.popen(command_line)
  rescue => e
    raise ExecutableLoadError.new(e)
  end
  output = capture_output(process, &block)
  process.close
  OpenStruct.new(output: output, exit_status: $?.exitstatus, command_line: command_line)
end

Private Instance Methods

capture_output(process) { |output_line| ... } click to toggle source
# File lib/phantomrb/runner.rb, line 35
def capture_output(process)
  if block_given?
    output = ''
    process.each_line do |output_line|
      output << output_line
      yield(output_line)
    end
    output
  else
    process.read
  end
end
full_script_path(script) click to toggle source
# File lib/phantomrb/runner.rb, line 26
def full_script_path(script)
  full_script_path = File.expand_path(script)
  if File.file?(full_script_path)
    full_script_path
  else
    raise ScriptLoadError.new("#{full_script_path} not found")
  end
end