如何在服务器上修复Sinatra损坏的依赖项

问题描述 投票:0回答:1

我有一个运行Ruby v2.4.3。的Sinatra项目。

[使用rbenv,我将机器上的Ruby版本更新为2.6.1,并修改了项目的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,手动更新了所有gems,但无济于事。

ruby postgresql rubygems sinatra sinatra-activerecord
1个回答
0
投票

啊哈,我最近也遇到了这个问题。发生这种情况是因为随Homebrew发行的OpenSSL版本已更新为1.1。我怀疑您的2.6.1 gem是以前使用旧版本的OpenSSL构建的,也许是在另一个项目上构建的,因此消息

Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)`

您应该可以使用以下方法重新安装gem:

gem uninstall pg_ext

如果您有多个版本,则应将其全部删除,然后运行:

bundle install

而且,手指交叉,你应该会好起来。

但是,我也发现对于某些gems仍然不起作用,可能是因为它们指定了要使用的OpenSSL版本。如果问题仍然存在,您仍然可以使用旧版本的OpenSSL。这有点夸张,但可能适合在您自己的本地/开发环境中运行东西-您已经收到警告。

brew uninstall openssl
brew uninstall openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

是,请运行两次卸载。

根据下面的评论,这在运行使用旧版OpenSSL编译的旧版Ruby时会有所帮助。使用更新的红宝石,我只需要重新安装它们,就可以使用新版本的OpenSSL,然后其他所有东西都可以工作。也重新安装宝石。

© www.soinside.com 2019 - 2024. All rights reserved.