class Nand::Launcher::RbFileLauncher

Public Class Methods

launchable?( target, io, opts ) click to toggle source
# File lib/nand/launcher/rb_file_launcher.rb, line 8
def self.launchable?( target, io, opts )
  return false unless target.to_s =~/\.rb$/
  require_rb(target) and
    true
rescue LoadError => e
  io.puts "\t- " + e.message
  false
rescue => e
  io.puts "\t- " + e.message
  false
end
load( target, opts, *argv ) click to toggle source
# File lib/nand/launcher/rb_file_launcher.rb, line 19
def self.load( target, opts, *argv )
  plugin = opts[:plugin] || File.basename(target, ".rb").split(/_/).map{|s| s.capitalize}.join
  #raise "Option --plugin is Required for #{target}" if plugin.nil?
  executor = Plugin.plugin!(plugin, *argv)
  raise "Executor #{plugin} is Not Emplemented exec Method" unless executor.respond_to?(:exec)
  RbFileLauncher.new(target, executor, opts, *argv)
rescue LoadError => e
  raise "Not Found Plugin #{target}"
end
new(target, executor, opts, *argv) click to toggle source
Calls superclass method Nand::Launcher::Base::new
# File lib/nand/launcher/rb_file_launcher.rb, line 34
def initialize(target, executor, opts, *argv)
  super(target, opts, *argv)
  @executor = executor
end
rb_file(target) click to toggle source
# File lib/nand/launcher/rb_file_launcher.rb, line 31
def self.rb_file(target)
  Pathname.new(target).expand_path
end
require_rb(target) click to toggle source
# File lib/nand/launcher/rb_file_launcher.rb, line 28
def self.require_rb(target)
  require "#{RbFileLauncher.rb_file(target).to_s}"
end

Public Instance Methods

launch() click to toggle source
# File lib/nand/launcher/rb_file_launcher.rb, line 38
def launch
  if child = Process.fork
    child
  else
    begin
      STDIN.reopen(@exec_stdin)
      STDOUT.reopen(@exec_stdout)
      STDERR.reopen(@exec_stderr)
      Signal.trap(:INT)  {exit 0}
      Signal.trap(:TERM) {exit 0}
      Process.setpgrp
      @executor.exec
    rescue LoadError => e
      STDERR.puts e.message
    rescue => e
      STDERR.puts e.message
    ensure

    end
  end
end