class AppMgr
Attributes
app[R]
Public Class Methods
new(rsf: nil, reg: nil, rsc: nil, debug: true)
click to toggle source
# File lib/app-mgr.rb, line 12 def initialize(rsf: nil, reg: nil, rsc: nil, debug: true) @rsf, @reg, @rsc, @debug = rsf, reg, rsc, debug @rscript = RScript.new(type: 'app', debug: debug) @app = {} load_all(rsf) end
Public Instance Methods
available()
click to toggle source
# File lib/app-mgr.rb, line 22 def available() @app.keys end
call(app_name)
click to toggle source
# File lib/app-mgr.rb, line 26 def call(app_name) run(app_name) unless running? app_name @app[app_name.to_sym][:running].call end
connect(name) { |app| ... }
click to toggle source
# File lib/app-mgr.rb, line 53 def connect(name) app = @app[name.to_sym] if app and app[:running] then yield(app[:running]) else return "app %s not running" % name end end
execute(name, method, params='')
click to toggle source
# File lib/app-mgr.rb, line 33 def execute(name, method, params='') @app[name.to_sym][:running].method(method.to_sym).call(params) end
run(name)
click to toggle source
# File lib/app-mgr.rb, line 37 def run(name) app = @app[name.to_sym] class_name = app[:code][/(?<=class )\w+/] app[:running] = eval(class_name + '.new') end
running()
click to toggle source
# File lib/app-mgr.rb, line 45 def running() @app.select {|k,v| v[:running]}.keys end
running?(name)
click to toggle source
# File lib/app-mgr.rb, line 49 def running?(name) @app[name.to_sym][:running] ? true : false end
stop(name)
click to toggle source
# File lib/app-mgr.rb, line 65 def stop(name) app = @app[name.to_sym] if app.delete(:running) then return "app %s stopped" % name else return "couldn't find app %s" % name end end
unload(name)
click to toggle source
# File lib/app-mgr.rb, line 77 def unload(name) class_name = @app[name.to_sym][:running].class.name if class_name then Object.send(:remove_const, class_name) @app.delete name.to_sym return "app %s unloaded" % name else return "couldn't find app %s" % name end end
Private Instance Methods
load_all(rsf_package)
click to toggle source
# File lib/app-mgr.rb, line 93 def load_all(rsf_package) @rscript.jobs(rsf_package).each do |app_name| puts 'app_name: ' + app_name.inspect if @debug app = @app[app_name] = {} codeblock = @rscript.read(['//app:' + app_name.to_s, @rsf]).first puts 'codeblock: ' + codeblock.inspect if @debug app[:code] = codeblock reg, rsc = @reg, @rsc eval codeblock end end