ncbo / ontologies_api

Hypermedia API for NCBO's ontology-related projects
http://data.bioontology.org
Other
25 stars 10 forks source link

Unit tests fail in Ruby 2.7.0 and 2.7.1 #69

Closed mdorf closed 4 years ago

mdorf commented 4 years ago

The exception:

/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext/object/duplicable.rb:111:
in `<class:BigDecimal>': undefined method `new' for BigDecimal:Class (NoMethodError)

Full Stack Trace:

Traceback (most recent call last):
    30: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb:4:in `<main>'
    29: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb:4:in `select'
    28: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb:15:in `block in <main>'
    27: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb:15:in `require'
    26: from /Users/mdorf/dev/ncbo/ontologies_api/test/controllers/test_search_controller.rb:1:in `<top (required)>'
    25: from /Users/mdorf/dev/ncbo/ontologies_api/test/controllers/test_search_controller.rb:1:in `require_relative'
    24: from /Users/mdorf/dev/ncbo/ontologies_api/test/test_case.rb:15:in `<top (required)>'
    23: from /Users/mdorf/dev/ncbo/ontologies_api/test/test_case.rb:15:in `require_relative'
    22: from /Users/mdorf/dev/ncbo/ontologies_api/app.rb:165:in `<top (required)>'
    21: from /Users/mdorf/dev/ncbo/ontologies_api/app.rb:165:in `require_relative'
    20: from /Users/mdorf/dev/ncbo/ontologies_api/init.rb:14:in `<top (required)>'
    19: from /Users/mdorf/dev/ncbo/ontologies_api/init.rb:3:in `require_dir'
    18: from /Users/mdorf/dev/ncbo/ontologies_api/init.rb:3:in `each'
    17: from /Users/mdorf/dev/ncbo/ontologies_api/init.rb:3:in `block in require_dir'
    16: from /Users/mdorf/dev/ncbo/ontologies_api/init.rb:3:in `require_relative'
    15: from /Users/mdorf/dev/ncbo/ontologies_api/controllers/recommender_controller.rb:1:in `<top (required)>'
    14: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require_with_backports'
    13: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require'
    12: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/all.rb:3:in `<top (required)>'
    11: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require_with_backports'
    10: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require'
     9: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext.rb:1:in `<top (required)>'
     8: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext.rb:1:in `each'
     7: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext.rb:2:in `block in <top (required)>'
     6: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require_with_backports'
     5: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require'
     4: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext/object.rb:3:in `<top (required)>'
     3: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require_with_backports'
     2: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/backports-3.17.2/lib/backports/std_lib.rb:12:in `require'
     1: from /Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext/object/duplicable.rb:109:in `<top (required)>'
/Users/mdorf/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activesupport-3.2.22.5/lib/active_support/core_ext/object/duplicable.rb:111:in `<class:BigDecimal>': undefined method `new' for BigDecimal:Class (NoMethodError)
mdorf commented 4 years ago

This appears to be due to this include in the controllers/recommender_controller.rb: require 'active_support/all'

Our Gem for Active Support specifies:

gem 'activesupport', '~> 3.0'

I've tried removing the 3.0 limit and updating Active Support to the latest version with no success.

mdorf commented 4 years ago

I've confirmed that this problem is NOT manifested in Ruby v2.5.8.

I've confirmed that this problem affects Ruby v2.7.0 and v2.7.1.

mdorf commented 4 years ago

Commenting out the include require 'active_support/all' results in a bad output from the Recommender:

With the include in place:

Screen Shot 2020-06-04 at 5 05 38 PM

With the include commented out:

Screen Shot 2020-06-04 at 5 05 52 PM
mdorf commented 4 years ago

Based on a proposed solution in this thread: https://github.com/ruby/bigdecimal/issues/127#issuecomment-450730949, adding

gem 'bigdecimal', '1.4.2'

appears to solve the issue.