class Rote::Filters::Exec

Page filter that runs it's body through the specified command, and captures the output. E.g.:

#:exec#python#
  print "Hello, World!"
#:exec#

Although this filter can be used to execute Ruby code, you must bear in mind that this will happen in a separate interpreter process, so no variables or requires from the current environment will be available. If you wish to evaluate Ruby code in your pages, you should use either ERB (evaluated at the beginning of the render), or the Eval filter (evaluated near the end).

Public Class Methods

new(macro_re = MACRO_RE) click to toggle source
# File lib/rote/filters/exec.rb, line 30
def initialize(macro_re = MACRO_RE)
  super([],macro_re)
end

Public Instance Methods

macro_exec(cmd,body,raw) click to toggle source
# File lib/rote/filters/exec.rb, line 34
def macro_exec(cmd,body,raw)
  res = IO.popen(cmd, 'w+') do |io|
    Thread.new { io.write body; io.close_write }
    io.read
  end
end