use*_*745 35 ruby-on-rails ruby-on-rails-7
从 Rails 6 升级到 Rails 7 并在本地运行一些 ActiveStorage 方法时,我看到:
Could not open library 'vips.42': dlopen(vips.42, 0x0005): tried: 'vips.42' (no such file), '/usr/local/lib/vips.42' (no such file), '/usr/lib/vips.42' (no such file), '/Users/st/rails/myapp/vips.42' (no such file), '/usr/local/lib/vips.42' (no such file), '/usr/lib/vips.42' (no such file). (LoadError)
Could not open library 'libvips.42.dylib': dlopen(libvips.42.dylib, 0x0005): tried: 'libvips.42.dylib' (no such file), '/usr/local/lib/libvips.42.dylib' (no such file), '/usr/lib/libvips.42.dylib' (no such file), '/Users/st/rails/myapp/libvips.42.dylib' (no such file), '/usr/local/lib/libvips.42.dylib' (no such file), '/usr/lib/libvips.42.dylib' (no such file)
Run Code Online (Sandbox Code Playgroud)
GitHub 上有很多类似的问题:(例如这里)。
我不确定是否需要安装 ruby-vips gem 或者我的操作系统/共享库是否有问题。
请注意,其他一些人也报告了相同的错误。我想知道这是否可能是一个错误?
use*_*745 73
如果您刚刚从rails 6升级到7,并config.load_defaults 7.0在config/application.rb中进行了设置,那么您的应用程序将默认使用vips。
如果这就是您想要的,只需确保 vips 已在本地安装即可。您可以使用自制程序安装它(感谢@timroman提供此信息):
brew install vips
Run Code Online (Sandbox Code Playgroud)
但是,如果您不想使用 vips,并且更喜欢像 Rails 6 中那样使用 mini_magick,只需将此行包含在 config/application.rb 中
config.active_storage.variant_processor = :mini_magick
Run Code Online (Sandbox Code Playgroud)
笔记
如果您在 Heroku 上遇到类似问题,请首先确保本地一切正常(如果没有,请参阅上文),然后要解决 Heroku 上的问题,请尝试以下 3 个步骤:
添加gem "ruby-vips"到您的 gemfile(如果尚不存在)
设置这两个构建包(除了您已有的构建包之外,在本例中我还使用了 heroku/ruby 构建包,因此将其作为最后一个构建包包含在内):
config.active_storage.variant_processor = :mini_magick
Run Code Online (Sandbox Code Playgroud)
我认为这里的顺序很重要(如果您有其他构建包,最好将它们添加在前两个之后)。您可以像这样设置构建包
heroku-community/apt
https://github.com/brandoncc/heroku-buildpack-vips
heroku/ruby
Run Code Online (Sandbox Code Playgroud)
Aptfile内容如下:heroku buildpacks:set --index=1 heroku-community/apt
heroku buildpacks:set --index=2 https://github.com/brandoncc/heroku-buildpack-vips
Run Code Online (Sandbox Code Playgroud)
笔记:
就像其他环境(见上文)一样,您必须安装 libvips。在 ubuntu 上使用apt-get执行此操作,方法是将其添加到工作流程文件中的“步骤”下:
- name: Install libvips
run: sudo apt-get install -y libvips
Run Code Online (Sandbox Code Playgroud)
小智 29
对于 Linux 用户apt install libvips,如果想继续使用 Rails 7 的默认负载,只需使用 进行安装即可。
| 归档时间: |
|
| 查看次数: |
17836 次 |
| 最近记录: |