class Crabfarm::Live::Manager

Attributes

browser_adapter[R]
primary_driver[R]
proxy_port[R]

Public Class Methods

new() click to toggle source
# File lib/crabfarm/live/manager.rb, line 15
def initialize
  reserve_port
end

Public Instance Methods

block_requests() { || ... } click to toggle source
# File lib/crabfarm/live/manager.rb, line 37
def block_requests
  begin
    stop_crabtrap
    return yield
  ensure
    restart_crabtrap nil
  end
end
reset() click to toggle source
# File lib/crabfarm/live/manager.rb, line 32
def reset
  reset_primary_driver
  @viewer.reset
end
restart_crabtrap(_memento=nil) click to toggle source
# File lib/crabfarm/live/manager.rb, line 60
def restart_crabtrap(_memento=nil)
  options = if _memento
    path = Utils::Resolve.memento_path _memento
    raise ConfigurationError.new "No memento found at #{path}" unless File.exists? path
    { mode: :replay, bucket_path: path }
  else
    { mode: :pass }
  end

  stop_crabtrap
  start_crabtrap options
end
show_content(_content) click to toggle source
# File lib/crabfarm/live/manager.rb, line 50
def show_content(_content)
  block_requests { @viewer.show_content(_content) }
end
show_file(_path) click to toggle source
# File lib/crabfarm/live/manager.rb, line 46
def show_file(_path)
  block_requests { @viewer.show_file(_path) }
end
show_primary_contents() click to toggle source
# File lib/crabfarm/live/manager.rb, line 54
def show_primary_contents
  unless @viewer_driver.nil?
    @viewer.show_content(primary_driver.to_html)
  end
end
start() click to toggle source
# File lib/crabfarm/live/manager.rb, line 19
def start
  restart_crabtrap
  load_browser_adapter
  load_primary_driver_and_viewer
  @viewer.welcome
end
stop() click to toggle source
# File lib/crabfarm/live/manager.rb, line 26
def stop
  release_primary_driver
  release_viewer_driver
  stop_crabtrap
end

Private Instance Methods

build_support_driver() click to toggle source
# File lib/crabfarm/live/manager.rb, line 99
def build_support_driver
  case config.recorder_driver
  when :firefox
    Crabfarm::Support::WebdriverFactory.build_firefox_driver driver_config
  when :chrome
    Crabfarm::Support::WebdriverFactory.build_chrome_driver driver_config
  else return nil end
end
config() click to toggle source
# File lib/crabfarm/live/manager.rb, line 153
def config
  Crabfarm.config
end
crabtrap_address() click to toggle source
# File lib/crabfarm/live/manager.rb, line 149
def crabtrap_address
  "127.0.0.1:#{@proxy_port}"
end
driver_config() click to toggle source
# File lib/crabfarm/live/manager.rb, line 143
def driver_config
  {
    proxy: crabtrap_address
  }
end
load_browser_adapter() click to toggle source
# File lib/crabfarm/live/manager.rb, line 79
def load_browser_adapter
  @browser_adapter = Strategies.load(:browser, config.browser).new crabtrap_address
  @browser_adapter.prepare_driver_services
end
load_primary_driver_and_viewer() click to toggle source
# File lib/crabfarm/live/manager.rb, line 84
def load_primary_driver_and_viewer
  @primary_driver = browser_adapter.build_driver :default_driver

  # IDEA: improve this to allow different viewer modes
  unless browser_adapter.headless?
    primary_webdriver = browser_adapter.extract_webdriver @primary_driver
    @viewer = Viewer.new primary_webdriver unless primary_webdriver.nil?
  end

  if @viewer.nil?
    @viewer_driver = build_support_driver
    @viewer = Viewer.new @viewer_driver
  end
end
release_primary_driver() click to toggle source
# File lib/crabfarm/live/manager.rb, line 129
def release_primary_driver
  @browser_adapter.release_driver @primary_driver
  @browser_adapter.cleanup_driver_services
  @primary_driver = nil
end
release_viewer_driver() click to toggle source
# File lib/crabfarm/live/manager.rb, line 135
def release_viewer_driver
  unless @viewer_driver.nil?
    @viewer_driver.quit rescue nil
    @viewer_driver = nil
    @viewer = nil
  end
end
reserve_port() click to toggle source
# File lib/crabfarm/live/manager.rb, line 75
def reserve_port
  @proxy_port = Utils::PortDiscovery.find_available_port
end
reset_primary_driver() click to toggle source
# File lib/crabfarm/live/manager.rb, line 108
def reset_primary_driver
  @browser_adapter.reset_driver @primary_driver
end
start_crabtrap(_options) click to toggle source
# File lib/crabfarm/live/manager.rb, line 112
def start_crabtrap(_options)
  _options = _options.merge({
    port: @proxy_port,
    virtual: File.expand_path('./assets/live-tools', Crabfarm.root)
  })

  @crabtrap = CrabtrapRunner.new config.crabtrap_config.merge(_options)
  @crabtrap.start
end
stop_crabtrap() click to toggle source
# File lib/crabfarm/live/manager.rb, line 122
def stop_crabtrap
  unless @crabtrap.nil?
    @crabtrap.kill
    @crabtrap = nil
  else nil end
end