Hacking in a fix for Issue #279 (Method 'validate_decorators!' raises NameError) causes (in my app) that same method to raise RuntimeError with a message (see below) claiming that there are multiple contracts on method 'psych_yaml_as', which is in /lib/ruby/2.2.0/psych/core_ext.rb.
I don't know what to make of this. I'm not optimistic about crafting a simple example that shows the error, but hope that the trace (see below) will be a clue for some guru.
--- begin message --
c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/method_handler
.rb:159:in `validate_decorators!': (RuntimeError)
Oops, it looks like method 'psych_yaml_as' has multiple contracts:
--- begin trace ---
from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/m
ethod_handler.rb:31:in handle' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/d ecorators.rb:13:inmethod_added'
from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:21:in <class:Module>' from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:20:in<top (required)>'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require'
from c:/Ruby22/lib/ruby/2.2.0/psych.rb:11:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/yaml.rb:5:in<top (required)>'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require'
from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir/cookies.r
b:1:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir.rb:14:in <top (required)>'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in
require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in rescue in require'
from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in
require' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/ui/ui_c lient.rb:1:in<top (required)>'
from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl
asses/base_class_for_test.rb:5:in require_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl asses/base_class_for_test.rb:5:in<top (required)>'
from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_
tour/tests/meet_test.rb:1:in require_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_ tour/tests/meet_test.rb:1:in'
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - C:/Users/Burdette/AppDat
a/Roaming/RubyTest/logs/github_api/2017.12.13-Wed-14.47.46/test_meet.xml
c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in initialize' c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:inopen'
c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in get_counts_fr om_file' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:190:inblo
ck (3 levels) in <top (required)>'
c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:in eac h' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:inblo
ck (2 levels) in <top (required)>'
c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:in eac h_pair' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:inblo
ck in <top (required)>'
--- end trace ---
Hacking in a fix for Issue #279 (Method 'validate_decorators!' raises NameError) causes (in my app) that same method to raise RuntimeError with a message (see below) claiming that there are multiple contracts on method 'psych_yaml_as', which is in /lib/ruby/2.2.0/psych/core_ext.rb.
I don't know what to make of this. I'm not optimistic about crafting a simple example that shows the error, but hope that the trace (see below) will be a clue for some guru.
--- begin message -- c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/method_handler .rb:159:in `validate_decorators!': (RuntimeError) Oops, it looks like method 'psych_yaml_as' has multiple contracts:
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Symbol
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>
Did you accidentally put more than one contract on a single function, like so?
Contract String => String Contract Num => String def foo x end
If you did NOT, then you have probably discovered a bug in this library. Please file it along with the relevant code at: https://github.com/egonSchiele/contracts.ruby/issues
--- end message---
--- begin trace --- from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/m ethod_handler.rb:31:in
handle' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/d ecorators.rb:13:in
method_added' from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:21:in<class:Module>' from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:20:in
<top (required)>'require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/psych.rb:11:in<top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:inrequire' from c:/Ruby22/lib/ruby/2.2.0/yaml.rb:5:in
<top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:inrequire' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir/cookies.r b:1:in<top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:inrequire' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir.rb:14:in
<top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:inrequire' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in
rescue in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:inrequire' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/ui/ui_c lient.rb:1:in
<top (required)>' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl asses/base_class_for_test.rb:5:inrequire_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl asses/base_class_for_test.rb:5:in
<top (required)>' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_ tour/tests/meet_test.rb:1:inrequire_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_ tour/tests/meet_test.rb:1:in
initialize' c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in
open' c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:inget_counts_fr om_file' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:190:in
blo ck (3 levels) in <top (required)>' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:ineac h' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:in
blo ck (2 levels) in <top (required)>' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:ineac h_pair' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:in
blo ck in <top (required)>' --- end trace ---