Run a block after specs are run.
prevent_double_run - Pass false to disable double run prevention
# File lib/spork.rb, line 45 def after_each_run(prevent_double_run = true, &block) return if prevent_double_run && already_ran?(caller.first) after_each_run_procs << block end
# File lib/spork.rb, line 104 def detect_and_require(subfolder) ([LIBDIR.to_s] + other_spork_gem_load_paths).uniq.each do |gem_path| Dir.glob(File.join(gem_path, subfolder)).each { |file| require file } end end
Run a block AFTER the fork occurs. By default, if prefork is called twice in the same file and line number, the supplied block will only be ran once.
prevent_double_run - Pass false to disable double run prevention
# File lib/spork.rb, line 31 def each_run(prevent_double_run = true, &block) return if prevent_double_run && already_ran?(caller.first) if @state == :using_spork each_run_procs << block else yield end end
Used by the server. Called to run all of the after_each_run blocks.
# File lib/spork.rb, line 79 def exec_after_each_run # processes in reverse order similar to at_exit while p = after_each_run_procs.pop; p.call; end true end
Used by the server. Called to run all of the prefork blocks.
# File lib/spork.rb, line 71 def exec_each_run(&block) activate_after_each_run_at_exit_hook each_run_procs.each { |p| p.call } each_run_procs.clear yield if block_given? end
Used by the server. Called when loading the prefork blocks of the code.
# File lib/spork.rb, line 65 def exec_prefork(&block) using_spork! yield end
# File lib/spork.rb, line 110 def other_spork_gem_load_paths @other_spork_gem_load_paths ||= ( Gem.latest_load_paths.grep(/spork/).select do |g| not g.match(%{/spork-[0-9\-.]+/lib}) # don't include other versions of spork end ) end
Run a block, during prefork mode. By default, if prefork is called twice in the same file and line number, the supplied block will only be ran once.
prevent_double_run - Pass false to disable double run prevention
# File lib/spork.rb, line 21 def prefork(prevent_double_run = true, &block) return if prevent_double_run && already_ran?(caller.first) yield end
Used by the server. Returns the current state of Spork.
# File lib/spork.rb, line 60 def state @state ||= :not_using_spork end
Same as trap_method, but for class methods instead
# File lib/spork.rb, line 100 def trap_class_method(klass, method_name) trap_method((class << klass; self; end), method_name) end
Traps an instance method of a class (or module) so any calls to it don’t actually run until Spork.exec_each_run
# File lib/spork.rb, line 86 def trap_method(klass, method_name) method_name_without_spork, method_name_with_spork = alias_method_names(method_name, :spork) klass.class_eval alias :#{method_name_without_spork} :#{method_name} unless method_defined?(:#{method_name_without_spork}) def #{method_name}(*args) Spork.each_run(false) do #{method_name_without_spork}(*args) end end, __FILE__, __LINE__ + 1 end
Generated with the Darkfish Rdoc Generator 2.