Sha256: 8445f3fab82d4aa990b3e9b183fc8606295d1edf4ce47a43d9255af9563136ae
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require "loadable_component/version" # # Read more about LoadableComponent here: # # http://code.google.com/p/selenium/wiki/LoadableComponent # class LoadableComponent class UnableToLoadComponent < StandardError; end class SubclassResponsibility < StandardError; end def load raise SubclassResponsibility, "should implement #load" end def loaded? raise SubclassResponsibility, "should implement #loaded?" end def get load unless loaded? unless loaded? raise UnableToLoadComponent, unable_to_load_message end self end private def unable_to_load_message "could not load #{self.class.name}" end end class SlowLoadableComponent < LoadableComponent def initialize(timeout) @timeout = timeout end def get if loaded? return self end load end_time = Time.now + @timeout until Time.now >= end_time return self if loaded? check_error sleep sleep_interval end unless loaded? raise UnableToLoadComponent, unable_to_load_message end self end # # Override this method to check for well-known error cases, which # means loading has finished, but an error condition was seen. # def check_error # no-op by default end def sleep_interval 0.2 end def unable_to_load_message "#{super} after #{@timeout} seconds" end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
loadable_component-0.0.3 | lib/loadable_component.rb |