flyerhzm / rails_best_practices

a code metric tool for rails projects
http://rails-bestpractices.com
MIT License
4.16k stars 276 forks source link

Gem not working with old ruby versions #395

Closed alagos closed 1 year ago

alagos commented 1 year ago

When running, require_all is throwing this syntax error in an old project I'm working on:

/Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:208:in `require': /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/rails_best_practices-1.23.1/lib/rails_best_practices/core/checks_loader.rb:40: syntax error, unexpected '.' (SyntaxError)
        check_class&.new(options || {})
                     ^
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:208:in `__require'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:98:in `block in require_all'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:96:in `each'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:96:in `require_all'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:118:in `block in require_rel'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:117:in `each'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/require_all-3.0.0/lib/require_all.rb:117:in `require_rel'
    from /Users/alter/.rbenv/versions/2.2.10/lib/ruby/gems/2.2.0/gems/rails_best_practices-1.23.1/lib/rails_best_practices/core.rb:3:in `<top (required)>'

so probably would be good to update the spec.required_ruby_version definition.

flyerhzm commented 1 year ago

@alagos it is require_all gem which uses safe navigation, it requires ruby 2.3

alagos commented 1 year ago

Yep, I'm aware of that. My point is that rails_best_practices is configured to work with spec.required_ruby_version = '>= 1.9.0', which is unrealistic as its dependency spec.add_runtime_dependency('require_all', '~> 3.0') doesn't work with ruby >= 1.9.0 (indeed, they don't even have a required_ruby_version definition in their gem).

flyerhzm commented 1 year ago

@alagos done, required_ruby_version is 2.3.0 now