如何修复服务器上 Sinatra 损坏的依赖项
How to fix broken dependencies for Sinatra on server
我有一个 Sinatra 项目 运行 Ruby v2.4.3.
使用 rbenv,我将机器上的 Ruby 版本更新为 2.6.1 并修改了项目的 Gemfile,指定了新版本。
这是更新的 Gemfile:
source "https://rubygems.org"
ruby '2.6.1'
gem 'sinatra', '1.4.6'
gem 'ralyxa'
gem 'alexa_verifier'
gem 'activesupport'
gem 'pg'
gem 'rake'
gem 'sinatra-activerecord'
gem 'openssl'
group :production do
gem "puma"
end
现在,当我使用 ruby server.rb
启动服务器时,我收到几条错误消息:
2: from server.rb:2:in `<main>'
1: from /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- sinatra/activerecord (LoadError)
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:103:in `require': dlopen(/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
Reason: image not found - /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:103:in `require': Error loading the 'postgresql' Active Record adapter. Missing a gem it depends on? dlopen(/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
Reason: image not found - /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle
我尝试降级 Ruby 版本,删除并重新安装 OpenSSL,手动更新所有 gem,但没有任何效果。
啊哈,我最近也 运行 喜欢这个。发生这种情况是因为随 Homebrew 分发的 OpenSSL 版本已更新到 1.1。我怀疑你的 2.6.1 gems 是以前构建的,也许是在另一个项目上,使用旧版本的 OpenSSL 因此消息
Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)`
您应该能够重新安装 gem 使用:
gem uninstall pg_ext
如果您有多个版本,那么您应该将它们全部删除,然后 运行:
bundle install
祝你好运,你应该可以开始了。
但是,我还发现对于一些 gem 来说这仍然不起作用,可能是因为他们指定了要使用的 OpenSSL 版本。如果问题仍然存在,您仍然可以使用旧版本的 OpenSSL。这有点过激,但对于 运行 在您自己的 local/dev 环境中进行操作可能没问题 - 您已收到警告。
brew uninstall openssl
brew uninstall openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
是的,运行卸载了两次。
根据下面的评论,这在 运行 使用旧版本的 OpenSSL 编译的旧版本 Ruby 时有所帮助。使用较新的 Rubies,我只需重新安装它们即可选择较新版本的 OpenSSL,然后其他一切正常。也重新安装 gem。
我有一个 Sinatra 项目 运行 Ruby v2.4.3.
使用 rbenv,我将机器上的 Ruby 版本更新为 2.6.1 并修改了项目的 Gemfile,指定了新版本。
这是更新的 Gemfile:
source "https://rubygems.org"
ruby '2.6.1'
gem 'sinatra', '1.4.6'
gem 'ralyxa'
gem 'alexa_verifier'
gem 'activesupport'
gem 'pg'
gem 'rake'
gem 'sinatra-activerecord'
gem 'openssl'
group :production do
gem "puma"
end
现在,当我使用 ruby server.rb
启动服务器时,我收到几条错误消息:
2: from server.rb:2:in `<main>'
1: from /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- sinatra/activerecord (LoadError)
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:103:in `require': dlopen(/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
Reason: image not found - /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle
/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:103:in `require': Error loading the 'postgresql' Active Record adapter. Missing a gem it depends on? dlopen(/Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
Reason: image not found - /Users/vimbro/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/pg-1.2.2/lib/pg_ext.bundle
我尝试降级 Ruby 版本,删除并重新安装 OpenSSL,手动更新所有 gem,但没有任何效果。
啊哈,我最近也 运行 喜欢这个。发生这种情况是因为随 Homebrew 分发的 OpenSSL 版本已更新到 1.1。我怀疑你的 2.6.1 gems 是以前构建的,也许是在另一个项目上,使用旧版本的 OpenSSL 因此消息
Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)`
您应该能够重新安装 gem 使用:
gem uninstall pg_ext
如果您有多个版本,那么您应该将它们全部删除,然后 运行:
bundle install
祝你好运,你应该可以开始了。
但是,我还发现对于一些 gem 来说这仍然不起作用,可能是因为他们指定了要使用的 OpenSSL 版本。如果问题仍然存在,您仍然可以使用旧版本的 OpenSSL。这有点过激,但对于 运行 在您自己的 local/dev 环境中进行操作可能没问题 - 您已收到警告。
brew uninstall openssl
brew uninstall openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
是的,运行卸载了两次。
根据下面的评论,这在 运行 使用旧版本的 OpenSSL 编译的旧版本 Ruby 时有所帮助。使用较新的 Rubies,我只需重新安装它们即可选择较新版本的 OpenSSL,然后其他一切正常。也重新安装 gem。