最近我从RVM迁移到Rbenv。我使用passenger
和nginx
运行了一堆不同的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
。
有什么想法吗?
答案 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
安装的整个过程。
rbenv
和rvm
使用环境变量来拦截您的命令。
您的系统passenger
(passenger-config
目录中的文件夹列表)中没有$PATH
或home
二进制文件,{{1 }}二进制文件是从passenger
安装的,并存储在rbenv
文件夹中。
.rbenv/<ruby-version>
的每个版本都有独立的依存关系。
ruby
截获您的命令(rbenv
),并根据您设置的passenger-config
binary
运行正确的.rbenv/<ruby-version>/gems/passenger/passenger-config
(ruby-version
) }或globally
。
locally
可能以类似的方法工作,并且与rvm
不兼容。
因此,您需要检查rbenv
env变量的~/.bash_profile
,~/.bashrc
或任何其他终端配置配置文件设置,并将其删除。
正确安装rvm
后,运行rbenv
命令command line interface
passenger-config
答案 1 :(得分:-1)
在您的ruby 2.3.3环境中某些东西已损坏。
尝试“ 宝石卸载乘客”,然后按照提示卸载所有版本(如果有)。然后安装乘客宝石。然后希望您能够摆脱这个问题。
请确保已在相应的虚拟主机条目上将passenger_ruby设置为2.3.3路径。