manastech / middleman-search

LunrJS-based search for Middleman
MIT License
58 stars 31 forks source link

Support Ruby 3.2 #40

Open tnir opened 1 year ago

tnir commented 1 year ago

Describe the bug 🐛

Fails to build the site with Ruby 3.2 while succeeded with Ruby 3.1.3.

How to replicate it

  1. Update Ruby from 3.1 (3.1.3) to 3.2 (3.2.0)
  2. Run middleman build (or bundle exec middleman build) and see

https://github.com/rubygems/bundler-site/actions/runs/3776352924/jobs/6419573233

       error  build/search/lunr-index.json
undefined method `exists?' for File:Class
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:142:in `block in lunr_resource'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:142:in `each'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:142:in `detect'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:142:in `lunr_resource'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:36:in `build_index'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-search-50465e1c1580/lib/middleman-search/search-index-resource.rb:29:in `render'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:369:in `block in output_resource'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.3.1/lib/active_support/notifications.rb:208:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/util.rb:20:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:338:in `output_resource'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:216:in `block (2 levels) in output_resources'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:216:in `map!'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:216:in `block in output_resources'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:587:in `call_with_index'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:557:in `process_incoming_jobs'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:537:in `block in worker'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:528:in `fork'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:528:in `worker'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:519:in `block in create_workers'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:518:in `each'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:518:in `each_with_index'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:518:in `create_workers'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:457:in `work_in_processes'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/parallel-1.22.1/lib/parallel.rb:294:in `map'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:215:in `output_resources'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:185:in `output_files'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:121:in `block in run!'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.3.1/lib/active_support/notifications.rb:208:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/util.rb:20:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/builder.rb:120:in `run!'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-cli/lib/middleman-cli/build.rb:126:in `block in build'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.3.1/lib/active_support/notifications.rb:208:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-core/lib/middleman-core/util.rb:20:in `instrument'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-cli/lib/middleman-cli/build.rb:125:in `build'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `block in invoke_all'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `each'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `map'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `invoke_all'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:232:in `dispatch'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor.rb:40:in `block in register'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bundler/gems/middleman-038f4f606ff6/middleman-cli/bin/middleman:69:in `<top (required)>'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bin/middleman:25:in `load'
/home/runner/work/bundler-site/bundler-site/vendor/bundle/ruby/3.2.0/bin/middleman:25:in `<main>'

Expected

Build the site successfully even with Ruby 3.2.0 like Ruby 3.1.3

Screenshots

n/a

My setup