sportngin / brew-gem

Install gems as homebrew formulas
MIT License
195 stars 21 forks source link

Feature request: `reinstall` #73

Open parkr opened 2 years ago

parkr commented 2 years ago

Hey, thanks for this project. I have a gem installed with C-bindings. When the Homebrew Ruby is upgraded, the absolute path to the dylib files changes:

Ignoring eventmachine-1.2.7 because its extensions are not built. Try: gem pristine eventmachine --version 1.2.7
Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5
Ignoring http_parser.rb-0.8.0 because its extensions are not built. Try: gem pristine http_parser.rb --version 0.8.0
Ignoring sassc-2.4.0 because its extensions are not built. Try: gem pristine sassc --version 2.4.0
<internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': dlopen(/usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi_c.bundle, 9): Library not loaded: /usr/local/opt/ruby/lib/libruby.3.0.dylib (LoadError)
  Referenced from: /usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi_c.bundle
  Reason: image not found - /usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi_c.bundle
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi.rb:5:in `rescue in <top (required)>'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi.rb:2:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc/native.rb:3:in `<top (required)>'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc.rb:31:in `require_relative'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc.rb:31:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-sass-converter-2.1.0/lib/jekyll/converters/scss.rb:3:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-sass-converter-2.1.0/lib/jekyll-sass-converter.rb:4:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-4.2.1/lib/jekyll.rb:195:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-4.2.1/exe/jekyll:8:in `<top (required)>'
    from /usr/local/bin/jekyll:6:in `load'
    from /usr/local/bin/jekyll:6:in `<main>'
<internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- 3.1/ffi_c (LoadError)
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/ffi-1.15.5/lib/ffi.rb:3:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc/native.rb:3:in `<top (required)>'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc.rb:31:in `require_relative'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/sassc-2.4.0/lib/sassc.rb:31:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-sass-converter-2.1.0/lib/jekyll/converters/scss.rb:3:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-sass-converter-2.1.0/lib/jekyll-sass-converter.rb:4:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-4.2.1/lib/jekyll.rb:195:in `<top (required)>'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/local/Cellar/ruby/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/local/Cellar/gem-jekyll/4.2.1/gems/jekyll-4.2.1/exe/jekyll:8:in `<top (required)>'
    from /usr/local/bin/jekyll:6:in `load'
    from /usr/local/bin/jekyll:6:in `<main>'

In order to fix this, I ran brew gem uninstall jekyll && brew gem install jekyll. It would be nice to coalesce these into a single command for easier reinstallation.