module Flakifier

Module included in the target class. Generates a new method with the appropriate flakiness parameters, then replaces the original with it with the .flakify method.

Public Instance Methods

flakify(method_name, error) click to toggle source

TODO: Add ability to supply number of retries

# File lib/flake/flakifier.rb, line 8
def flakify(method_name, error)
  alias_method __original_method_name(method_name), method_name

  class_eval(__flaky_method(method_name, error))

  alias_method method_name, __flaky_method_name(method_name)

  self
end

Private Instance Methods

__flaky_method(method_name, error) click to toggle source
# File lib/flake/flakifier.rb, line 28
def __flaky_method(method_name, error)
  "def #{__flaky_method_name(method_name)}(*args, &block);
     @__flaky_method_call_count ||= 0;
     while @__flaky_method_call_count < 1;
       @__flaky_method_call_count += 1;
       raise #{error};
       return;
     end;

      #{__original_method_name(method_name)}(*args, &block);
     end;"
end
__flaky_method_name(method_name) click to toggle source
# File lib/flake/flakifier.rb, line 24
def __flaky_method_name(method_name)
  '__flaky_' + method_name.to_s
end
__original_method_name(method_name) click to toggle source
# File lib/flake/flakifier.rb, line 20
def __original_method_name(method_name)
  '__original_' + method_name.to_s
end