palkan / anyway_config

Configuration library for Ruby gems and applications
MIT License
778 stars 52 forks source link

Add support for ruby 3.1 #95

Closed such closed 2 years ago

such commented 2 years ago

Ruby 3.1 comes with Psych 4 that calls safe_load by default and does not support aliases by default.

What is the purpose of this pull request?

Add support for ruby 3.1

What changes did you make? (overview)

Checklist

rromanchuk commented 2 years ago

Stack trace and error message to funnel SEO as it's not obvious it's anycable adjacent unless following the stack. This isn't going away per https://bugs.ruby-lang.org/issues/17866#note-13

to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)

       /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
        from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:345:in `block in revive_hash'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each_slice'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `revive_hash'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:167:in `visit_Psych_Nodes_Mapping'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:345:in `block in revive_hash'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each_slice'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `revive_hash'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:167:in `visit_Psych_Nodes_Mapping'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:318:in `visit_Psych_Nodes_Document'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:335:in `safe_load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:370:in `load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/loaders/yaml.rb:33:in `parse_yml'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/rails/loaders/yaml.rb:8:in `load_base_yml'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/loaders/yaml.rb:13:in `block in call'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/tracing.rb:172:in `trace!'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/loaders/yaml.rb:13:in `call'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/loaders/base.rb:10:in `call'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/config.rb:364:in `block in load_from_sources'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/loaders.rb:55:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/anyway/loaders.rb:55:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/config.rb:363:in `load_from_sources'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/config.rb:336:in `block in load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/tracing.rb:132:in `capture'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/config.rb:331:in `load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anyway_config-2.2.2/lib/.rbnext/1995.next/anyway/config.rb:313:in `initialize'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anycable-core-1.2.0/lib/anycable.rb:49:in `new'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anycable-core-1.2.0/lib/anycable.rb:49:in `config'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anycable-rails-1.2.0/lib/anycable/rails/railtie.rb:56:in `block (2 levels) in <class:Railtie>'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:73:in `instance_eval'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:73:in `block in execute_hook'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:66:in `execute_hook'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:43:in `block in on_load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:42:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/activesupport/lib/active_support/lazy_load_hooks.rb:42:in `on_load'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/anycable-rails-1.2.0/lib/anycable/rails/railtie.rb:45:in `block in <class:Railtie>'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/initializable.rb:32:in `instance_exec'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/initializable.rb:32:in `run'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/initializable.rb:61:in `block in run_initializers'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:228:in `block in tsort_each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:431:in `each_strongly_connected_component_from'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:349:in `block in each_strongly_connected_component'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:347:in `each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:347:in `call'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:347:in `each_strongly_connected_component'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:226:in `tsort_each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tsort.rb:205:in `tsort_each'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/initializable.rb:60:in `run_initializers'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/application.rb:372:in `initialize!'
    from /Users/ryan/spar/Core/config/environment.rb:5:in `<top (required)>'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/kernel.rb:35:in `require'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/kernel.rb:35:in `require'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/application.rb:348:in `require_environment!'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/command/actions.rb:28:in `require_environment!'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands/console/console_command.rb:101:in `perform'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/thor-98dbec75e423/lib/thor/command.rb:27:in `run'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/thor-98dbec75e423/lib/thor/invocation.rb:127:in `invoke_command'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/thor-98dbec75e423/lib/thor.rb:392:in `dispatch'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/command/base.rb:87:in `perform'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/command.rb:48:in `invoke'
    from /Users/ryan/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands.rb:18:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'
palkan commented 2 years ago

Closed by https://github.com/palkan/anyway_config/commit/c2c416e202e5239bd91e1f6862b4c4ffb87a5375