【问题标题】:Passenger cannot load rbenv managed versions乘客无法加载 rbenv 托管版本
【发布时间】:2019-01-06 17:38:09
【问题描述】:

一个服务器有两个用户。 deploy 有 sudo 权限,guest 没有。 guest 有一个正在迁移 ruby​​ 版本(从 2.3.4 到 2.4.5)的应用程序。

最初,guest 安装 2.4.5 版后,乘客无法启动,因为它没有找到此版本的 ruby​​。 deploy 必须安装它。但是,启动服务器的下一阶段无法加载应用程序,同时确认它正在寻找deploy用户目录中的ruby版本

Error: The application encountered the following error: cannot load such file -- bundler/setup (LoadError)
/home/deploy/.rbenv/versions/2.4.5/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/home/deploy/.rbenv/versions/2.4.5/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:363:in `activate_gem'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:221:in `block in run_load_path_setup_code'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:527:in `running_bundler'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:220:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-loader.rb:86:in `load_app'
/usr/share/passenger/helper-scripts/rack-loader.rb:116:in `block in <module:App>'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:380:in `run_block_and_record_step_progress'
/usr/share/passenger/helper-scripts/rack-loader.rb:115:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-loader.rb:28:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-loader.rb:27:in `<main>'

passenger-config --ruby-command 似乎正在寻找合适的目录,

passenger-config was invoked through the following Ruby interpreter:
  Command: /home/guest/.rbenv/versions/2.4.5/bin/ruby
  Version: ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]

然而,

rbenv exec gem environment gemdir

返回

/home/guest/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0

如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails bundler rbenv


    【解决方案1】:

    这里的问题与不同的用户和调用的 ruby​​ 版本有关。

    passenger-config --ruby-command
    

    返回有趣的段落,在这种情况下:

     To use in Nginx : passenger_ruby /home/guest/.rbenv/versions/2.4.5/bin/ruby
    

    虽然nginx/sites-enabled/relevant_application 文件不需要为单个用户调用该文件,但此命令对于多个用户来说是必需的。然后重启nginx!

    【讨论】:

    • 我遇到了同样的错误,但我已经在 nginx conf 中添加了正确的 passenger_ruby 行。我不确定你所说的不同用户是什么意思,你能解释一下你是如何解决的吗?就我而言,我使用这两个命令获得了 ruby​​ 版本的正确文件夹。
    • 问题出在乘客配置上。如果服务器上只有一个用户,nginx/sites-enabled/yourApp 中不需要该行。我无法再访问该服务器,并且不记得如何处理多个用户(抱歉)
    猜你喜欢
    • 2014-11-23
    • 2019-09-04
    • 1970-01-01
    • 2012-02-27
    • 2018-01-03
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多