Как исправить нарушенные зависимости для Sinatra на сервере - PullRequest
0 голосов
/ 21 января 2020

У меня был проект 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, обновил все гемы вручную, но ничего не получилось.

1 Ответ

0 голосов
/ 21 января 2020

Ага, я тоже недавно столкнулся с этим. Это произошло потому, что версия OpenSSL, распространяемая вместе с Homebrew, была обновлена ​​до версии 1.1. Я подозреваю, что ваши гемы 2.6.1 были построены ранее, возможно, в другом проекте, используя старую версию OpenSSL, отсюда и сообщение

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

Вы сможете переустановить гем, используя:

gem uninstall pg_ext

Если у вас есть несколько версий, вы должны удалить их все, а затем запустить:

bundle install

и, скрестив пальцы, вы должны быть хорошими до go.

Однако я также обнаружил, что для некоторых драгоценных камней это все еще не работает, возможно, потому что они указали версию OpenSSL для использования. Если проблема все еще сохраняется, вы все равно можете перейти к старой версии OpenSSL. Это немного драматично c, но, вероятно, это нормально для запуска вещей в вашей локальной среде / среде разработки. Вас предупредили.

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

Да, запустите деинсталляцию дважды.

Согласно комментарию ниже, это помогло при запуске более старой версии Ruby, которая была скомпилирована с более старой версией OpenSSL. С более новыми Rubies мне просто пришлось переустановить их, что подхватило более новую версию OpenSSL, а затем все остальное работало. Переустановите драгоценные камни тоже.

...