ruby-on-rails - Rails,pow和Library未加载:/usr/local/lib/libsqlite3. 0.8.6.dylib

标签 ruby-on-rails ruby-on-rails-3 rack-pow

我已经有两个星期没有使用这个Rails应用程序了。昨天我回到了它,首先打开.dev URL(我正在使用pow),它给出了以下错误消息:
LoadError: dlopen([...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle, 9): Library not loaded: /usr/local/lib/libsqlite3.0.8.6.dylib Referenced from: [...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle Reason: image not found - [...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
我检查了rbenv安装,一切似乎都很好。我试图考虑可能导致这种情况的最新变化,但我做不到。我很确定我丢失了一些东西,但是我尝试调试它是徒劳的。我不知道它是否相关,但是最近我切换到了zsh。

最佳答案

解决方案

卸载并重新安装sqlite:

~/d/w/r/my-app git:master ❯❯❯ gem uninstall sqlite3                                                                      

Successfully uninstalled sqlite3-1.3.7

~/d/w/r/my-app git:master ❯❯❯ gem install sqlite3                                                                            
Fetching: sqlite3-1.3.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed sqlite3-1.3.7
1 gem installed

发生了什么

安装sqlite3 gem后,它将构建一个 native 组件,用于与 sqlite 进行对话,因此它链接到本地​​ sqlite3 库。这一切都是由gem处理的。发生这种情况时,它指定链接到的库的位置。

最近(一月),the homebrew formula for sqlite became keg-only。以前与 sqlite 相关联的所有内容均引用了自制软件版本。您可以使用otool -L进行检查:
~/d/w/r/my-app git:master ❯❯❯ otool -L /path/to/earlier/gem/sqlite3-1.3.6/lib/sqlite3/sqlite3_native.bundle
/path/to/earlier/gem/sqlite3-1.3.6/lib/sqlite3/sqlite3_native.bundle:
    /usr/local/lib/libsqlite3.0.8.6.dylib (compatibility version 9.0.0, current version 9.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

针对新版本运行otool,您可以看到它现在已与Apple提供的系统sqlite库链接在一起:
~/d/w/r/a/new-config git:master ❯❯❯ otool -L /path/to/new/gem/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
 /path/to/new/gem/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle:
    /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

关于ruby-on-rails - Rails,pow和Library未加载:/usr/local/lib/libsqlite3. 0.8.6.dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730583/

相关文章:

ruby-on-rails-3 - 轨道 Assets 路径

ruby-on-rails - Bundler::RubyVersionMismatch: 你的 Ruby 版本是 1.9.3,但是你的 Gemfile 指定了 2.0.0

ruby-on-rails - 在 Chrome 中未加载 Pow 域

ruby-on-rails - 将 XML 文档导入 Rails 数据库?

ruby-on-rails - Rails 5 系统测试不会停留在后台! (带有 Selenium 和 Chrome 的 capybara )

ruby-on-rails - Rails 3.1 - 跨服务器共享预编译资源

ruby-on-rails - Pow.cx Rails Assets 未加载(IOError : Closed Stream)

ruby-on-rails - rvm编译安装ruby 2.5.0出错

ruby-on-rails - 如何使用耐嚼的 gem 使用Elasticsearch滚动API?

ruby-on-rails-3 - 合并要素分支时如何处理Rails迁移?