Проблема с пассажиром и rbenv - несовместимая версия библиотеки - PullRequest
4 голосов
/ 14 апреля 2019

В последнее время я перешел из RVM в Rbenv.Я запускаю кучу разных приложений rails (у каждого своя версия ruby) с passenger и nginx.Тем не менее, я получаю сообщение об ошибке для двух приложений при попытке загрузить их:

/user_folder/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /usr/local/Cellar/passenger/6.0.2_1/libexec/buildout/ruby/ruby-2.3.3-x86_64-macosx/passenger_native_support.bundle (fatal)
    from /user_folder/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:427:in `load_native_extension'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:103:in `load_from_buildout_dir'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:39:in `try_load'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:50:in `start'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:443:in `<top (required)>'

Другие приложения работают нормально, и те работают, когда я использую webrick (автономно) вместо этого.Но по какой-то причине у меня возникают проблемы при работе с passenger.

. Я не уверен, совпадение это или нет, но оба приложения, с которыми у меня возникают проблемы, используют ruby ​​v2.3.3.

Есть идеи о том, что происходит?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Что-то повреждено в вашей среде ruby ​​2.3.3.

Попробуйте ' gem uninstall passenger ', следуйте инструкциям по удалению ВСЕХ версий (если есть).Затем установите пассажирский драгоценный камень.Тогда, надеюсь, вы сможете избавиться от этой проблемы.

Просто для того, чтобы убедиться, что вы установили путь passenger_ruby в 2.3.3 в соответствующей записи виртуального хоста.

0 голосов
/ 22 апреля 2019

Вы должны удалить rvm

Этот пост объясняет, как удалить rvm , кроме того, есть опасный , но пока эффективен скрипт взрыва rvm .

Вывод, который вы получаете не от rbenv, а rvm.

build-native-support. [passenger_native_support.bundle] trying to compile for the current user and Ruby interpreter... (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable) Compilation successful. The logs are here: /var/folders/_n/pb7r0l3x4kjgcvbdxj30nyn00000gn/T/passenger_native_support-142p5a1.log [passenger_native_support.bundle] successfully loaded.

Это может быть вызвано разными проблемами, я бы прошел всю процедуру удаления rvm и установки rbenv.

rbenv и rvm используют переменную окружения для перехвата ваших команд.

В вашей системе нет бинарного файла passenger или passenger-config $PATH (который представляет собой список папок в вашем каталоге home), бинарные файлы passenger устанавливаются из rbenv и хранится в папке .rbenv/<ruby-version>.

Каждая версия ruby имеет отдельные зависимости.

rbenv перехватывает ваши команды (passenger-config) и запускает правильный binary (.rbenv/<ruby-version>/gems/passenger/passenger-config) на основании ruby-version, который вы установили либо globally или locally.

rvm, вероятно, работает по аналогичной методологии и несовместимо с rbenv.

По этой причине вам нужно проверить ~/.bash_profile, ~/.bashrc или любые другие настройки профиля конфигурации терминала для переменных rvm env и удалить их.

После правильной установки rbenv введите команду command line interface passenger-config

passenger-config build-native-support

, а также рассмотрите возможность проверки Passenger + Nginx инструкции по установке .

...