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