在我的 ubuntu 服务器上,我将 ruby 版本控制策略从使用
rvm
切换为 rbenv
。 当我重新启动 nginx 服务器时,出现此错误:
Bundler 无法找到 Gemfile 中定义的 gem 之一
但是,这个异常有点误导,因为另一条消息说可能的问题是:
应用程序可能在错误的 Ruby 解释器下运行。目前正在 /usr/bin/ruby2.7 下运行。
所以我确信问题是乘客引用了不正确的 ruby 解释器,因为我实际上正在使用 rbenv 运行 ruby 版本
3.2.4
。 我该如何解决这个问题?
首先你必须找到你的 Ruby 解释器在哪里。在 Linux 中:找到这一点的最简单方法是运行
which ruby
。
> which ruby
> /home/<SomeUserOnYourServer>/.rbenv/shims/ruby
然后转到
/etc/nginx/conf.d
编辑此文件。
注释掉该行:
passenger_ruby /usr/bin/passenger_free_ruby;
添加此行以告诉乘客在哪里可以找到 ruby 翻译:
passenger_ruby /home/devadmin/.rbenv/shims/ruby;
# /etc/nginx/conf.d
### Begin automatically installed Phusion Passenger config snippet ###
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
#passenger_ruby /usr/bin/passenger_free_ruby;
passenger_ruby /home/devadmin/.rbenv/shims/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;
### End automatically installed Phusion Passenger config snippet ###
重新启动您的 nginx 服务器并查看它是否有效。