class SiteWatcher
Constants
- VERSION
Public Class Methods
new(before_hooks, pages, after_hooks, delay, logger)
click to toggle source
# File lib/site_watcher.rb, line 28 def initialize(before_hooks, pages, after_hooks, delay, logger) @before_hooks = before_hooks @pages = pages @after_hooks = after_hooks @delay = delay @logger = logger @force = false end
watch(opts={}, &block)
click to toggle source
# File lib/site_watcher.rb, line 10 def self.watch(opts={}, &block) trap(:SIGINT) { abort(?\n) } dsl = DSL::Top.new dsl.instance_eval(&block) delay = opts.fetch(:every, 5) logger = opts.fetch(:logger, ::Logger.new($stderr)) new( dsl.__sw_before_hooks, dsl.__sw_pages, dsl.__sw_after_hooks, delay, logger ).watch end
Public Instance Methods
watch()
click to toggle source
# File lib/site_watcher.rb, line 37 def watch capture_signals do loop do break if @pages.empty? force = @force @force &&= false @pages.each do |page| begin page.__sw_run!(force) @pages.delete(page) if page.__sw_remove_on_fulfillment rescue ::RSpec::Expectations::ExpectationNotMetError rescue => e @logger.warn("Exception on #{page.__sw_url}: #{e.inspect}") end end sleep(@delay) end end end
Private Instance Methods
capture_signals() { || ... }
click to toggle source
# File lib/site_watcher.rb, line 62 def capture_signals ::Signal.trap(:INT) { abort(?\n) } ::Signal.trap(:USR1) do ::Thread.new do @logger.warn("Received USR1, next round of tests will force fulfillment") end.join @force = true end @before_hooks.each(&:call) yield ensure ::Signal.trap(:INT, "DEFAULT") ::Signal.trap(:USR1, "DEFAULT") @after_hooks.each(&:call) end