乘客和rbenv问题-库版本不兼容

时间:2019-04-13 23:49:48

标签: ruby-on-rails ruby nginx passenger rbenv

最近我从RVM迁移到Rbenv。我使用passengernginx运行了一堆不同的Rails应用程序(每个应用程序都有不同的ruby版本)。 但是,尝试加载两个应用程序时出现错误:

/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 :(得分:0)

您应删除rvm

post explains how to remove rvm,另外还有一个危险,但yet effective rvm implode script

您收到的输出不是来自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安装的整个过程。

rbenvrvm使用环境变量来拦截您的命令。

您的系统passengerpassenger-config目录中的文件夹列表)中没有$PATHhome二进制文件,{{1 }}二进制文件是从passenger安装的,并存储在rbenv文件夹中。

.rbenv/<ruby-version>的每个版本都有独立的依存关系。

ruby截获您的命令(rbenv),并根据您设置的passenger-config binary运行正确的.rbenv/<ruby-version>/gems/passenger/passenger-configruby-version) }或globally

locally可能以类似的方法工作,并且与rvm不兼容。

因此,您需要检查rbenv env变量的~/.bash_profile~/.bashrc或任何其他终端配置配置文件设置,并将其删除。

正确安装rvm后,运行rbenv命令command line interface

passenger-config

,并考虑签出Passenger + Nginx installation instructions

答案 1 :(得分:-1)

在您的ruby 2.3.3环境中某些东西已损坏。

尝试“ 宝石卸载乘客”,然后按照提示卸载所有版本(如果有)。然后安装乘客宝石。然后希望您能够摆脱这个问题。

请确保已在相应的虚拟主机条目上将passenger_ruby设置为2.3.3路径。