我正在尝试在OSX上使用ffi-aspell
现在,代码失败了,因为找不到libaspell.so.15
,因为它在自制程序中的命名方式不同而且路径不同:
/opt/boxen/rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/ffi-1.9.18/lib/ffi/library.rb:147:in `block in ffi_lib': Could not open library 'aspell': dlopen(aspell, 5): image not found. (LoadError)
Could not open library 'libaspell.dylib': dlopen(libaspell.dylib, 5): image not found
所以经过一番挖掘后,我在Github上发现了一些人们正在检查安装hombrew,然后寻找路径的例子。
我最终得到了类似的东西,对我有用:
module Aspell
extend FFI::Library
begin
stdout, stderr, status = ::Open3.capture3("brew", "--prefix")
homebrew_path = if status.success?
"#{stdout.chomp}/lib"
else
'/usr/local/homebrew/lib'
end
rescue
# Homebrew doesn't exist
end
ffi_lib ['aspell', 'libaspell.so.15'] if RUBY_PLATFORM =~ /linux/
ffi_lib ["#{homebrew_path}/libaspell.dylib"] if RUBY_PLATFORM =~ /darwin/
这感觉就像一个相当hacky的解决方案。
有更清洁的方法吗?