class Sqreen::Js::JsService
Public Class Methods
new()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 15 def initialize detect_adapter end
Public Instance Methods
online?()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 25 def online? @online end
prepare(rule_name, code)
click to toggle source
@return [Sqreen::Js::ExecutableJs]
# File lib/sqreen/js/js_service.rb, line 20 def prepare(rule_name, code) raise 'Not online' unless online? @adapter.preprocess(rule_name, code) end
variant()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 29 def variant @adapter.variant_name end
Private Instance Methods
detect_adapter()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 35 def detect_adapter @online = try_sq_mini_racer || try_rhino Sqreen.log.info "JS engine online: #{variant}" if @online end
try_rhino()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 56 def try_rhino gem = Gem.loaded_specs['therubyrhino'] unless gem Sqreen.log.info "therubyrhino gem not detected" return false end require 'rhino' require 'sqreen/js/execjs_adapter' @adapter = ExecjsAdapter.new rescue LoadError => e Sqreen.log.warn "Failed loading rhino: #{e}" false end
try_sq_mini_racer()
click to toggle source
# File lib/sqreen/js/js_service.rb, line 41 def try_sq_mini_racer gem = Gem.loaded_specs['sq_mini_racer'] unless gem Sqreen.log.info "sq_mini_racer gem not detected" return false end require 'sqreen/mini_racer' require 'sqreen/js/mini_racer_adapter' @adapter = MiniRacerAdapter.new(true) rescue LoadError => e Sqreen.log.warn "Failed loading sq_mini_racer: #{e}" false end