When trying to use the new customize_gemfiles functionality, I run into the following error when using Ruby 3.1:
bundle exec appraisal install 15:05:24
bundler: failed to load command: appraisal (/Users/work/.rbenv/versions/3.1.4/bin/appraisal)
/Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/customize.rb:3:in `initialize': wrong number of arguments (given 1, expected 0) (ArgumentError)
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:38:in `new'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:38:in `customize_gemfiles'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:46:in `run'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:44:in `instance_eval'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:44:in `run'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:21:in `initialize'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:12:in `new'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/appraisal_file.rb:12:in `each'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/task.rb:32:in `block in initialize'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task_manager.rb:232:in `in_namespace'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb:141:in `namespace'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal/task.rb:9:in `initialize'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal.rb:4:in `new'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/lib/appraisal.rb:4:in `<top (required)>'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/bin/appraisal:4:in `require'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/appraisal-2.5.0/bin/appraisal:4:in `<top (required)>'
from /Users/work/.rbenv/versions/3.1.4/bin/appraisal:25:in `load'
from /Users/work/.rbenv/versions/3.1.4/bin/appraisal:25:in `<top (required)>'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
from /Users/work/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
from /Users/work/.rbenv/versions/3.1.4/bin/bundle:25:in `load'
from /Users/work/.rbenv/versions/3.1.4/bin/bundle:25:in `<main>'
This is caused by Ruby 3.1 deprecating the hash => keyword arguments compatibility stuff. The solution is simple, simply replace yield by **yield here:
Hi!
When trying to use the new
customize_gemfiles
functionality, I run into the following error when using Ruby 3.1:This is caused by Ruby 3.1 deprecating the hash => keyword arguments compatibility stuff. The solution is simple, simply replace
yield
by**yield
here:https://github.com/thoughtbot/appraisal/blob/main/lib/appraisal/appraisal_file.rb#L38
So the end result should be:
I think this should work for all supported Ruby versions.