class RSFServices
Attributes
package_basepath[R]
registry[R]
services[R]
Public Class Methods
new(reg=nil, package_basepath: '', log: nil, debug: false, app_rsf: nil)
click to toggle source
Calls superclass method
# File lib/rsf_services.rb, line 86 def initialize(reg=nil, package_basepath: '', log: nil, debug: false, app_rsf: nil) @log, @debug = log, debug puts 'inside RSF_services' if @debug super(log: log, debug: debug) @package_basepath, @services = package_basepath, {} @initialized = {} if reg then @registry = @services['registry'] = if reg.is_a? String then reg = DWSRegistry.new reg_path else reg end # load the system/startup RSF jobs startup = reg.get_key('system/startup') jobs = startup.xpath('*[load="1"]').inject({}) do |r, job| settings = reg.get_keys("system/packages/#{job.name}/*")\ .inject({}){|r,x| r.merge(x.name.to_sym => x.text) } r.merge(job.name => settings) end jobs.each do |package, settings| r = run_job(package.to_s, 'load', settings, package_path: settings[:url]) end end @app = AppMgr.new(rsf: app_rsf, reg: reg, rsc: self) if app_rsf end
Public Instance Methods
delete()
click to toggle source
# File lib/rsf_services.rb, line 128 def delete() PackageMethod.new self, type: :delete end
get()
click to toggle source
# File lib/rsf_services.rb, line 132 def get() PackageMethod.new self end
package_methods(package)
click to toggle source
# File lib/rsf_services.rb, line 202 def package_methods(package) url = File.join(@package_basepath, package + '.rsf') doc = Rexle.new URI.open(url, 'UserAgent' => 'ClientRscript').read doc.root.xpath('job/attribute::id').map {|x| x.value.to_s.gsub('-','_') } end
post()
click to toggle source
# File lib/rsf_services.rb, line 140 def post() PackageMethod.new self, type: :post end
put()
click to toggle source
# File lib/rsf_services.rb, line 136 def put() PackageMethod.new self, type: :put end
run_job(package, jobs, params={}, *qargs) { |params| ... }
click to toggle source
# File lib/rsf_services.rb, line 144 def run_job(package, jobs, params={}, *qargs) puts 'inside run_job' #if @debug package_path = "%s/%s.rsf" % [@package_basepath, package] if @log or @debug then msg = 'RSFServices/run job: ' + ("package: %s jobs: %s params: %s qargs: %s " + \ " package_path: %s" % [package, jobs, params, qargs, package_path]) @log.info msg if @log puts msg if @debug end yield(params) if block_given? a = [package_path, jobs.split(/\s/).map{|x| "//job:%s" % x} ,qargs].flatten(2) @log.info 'RSFServices/run job: a: ' + a.inspect if @log puts 'a: ' + a.inspect if @debug c, args, _ = read(a) puts 'c: ' + c.inspect if @debug rws, reg, app = self, @registry, @app begin @log.info 'RSFServices/run job: code: ' + c if @log and c.is_a? String # if there is a job id called *initialize* then execute if it hasn't # already been executed if self.jobs(package_path).include? :initialize and !@initialized[package_path] and jobs != 'initialize' then run_job(package, 'initialize') @initialized[package_path] = true end r = instance_eval c puts 'r: ' + r.inspect if @debug #thread = Thread.new {Thread.current[:v] = eval c} #thread.join #r = thread[:v] @log.info 'RSFServices/run job: result: ' + r if @log and r.is_a? String return r rescue Exception => e params = {} err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n") @log.debug 'RSFServices/run_job/error: ' + err_label if @log end end
Private Instance Methods
method_missing(method_name, *args)
click to toggle source
# File lib/rsf_services.rb, line 212 def method_missing(method_name, *args) puts 'inside method_missing' if @debug self.type = :get Package.new self, method_name.to_s, debug: @debug end