Module: PatchAssertions

Defined in:
lib/winrm/helpers/assert_patch.rb

Class Method Summary collapse

Class Method Details

.assert_arity_of_patched_method(klass, method_name, expected_arity) ⇒ Object



13
14
15
16
17
# File 'lib/winrm/helpers/assert_patch.rb', line 13

def self.assert_arity_of_patched_method(klass, method_name, expected_arity)
  if klass.instance_method(method_name).arity != expected_arity
    puts "WARNING: Cannot patch method #{klass}::#{method_name} since your latest gem seems to have different method definition that cannot be safely patched. This could possibly work, but it is advised to extensively test your version. Please use the supported version of patched gem."
  end
end

.assert_major_version(library_name, expected_major, override_var_name) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/winrm/helpers/assert_patch.rb', line 4

def self.assert_major_version(library_name, expected_major, override_var_name)
  supported_major_ver = ENV[override_var_name] || expected_major
  loaded_ver = Gem.loaded_specs[library_name].version
  loaded_major_ver = loaded_ver.to_s.match(/(^\d+\.\d+)\.(.*)$/)[1]
  if loaded_major_ver.to_s != supported_major_ver.to_s
    puts "WARNING: Unsupported version of #{library_name}. The supported major version of library is #{library_name} version #{expected_major}. This code path monkey patches few methods in #{library_name} to support additional features. This could possibly work, but it is advised to extensively test your version. If you are aware of the impact of using #{loaded_ver}, this warning can be disabled by setting #{override_var_name} to the major version #{loaded_major_ver}. "
  end
end