Apache/Passenger 服务器上“没有要加载的文件——bundler/setup”

2024-01-11

我正在尝试部署我的第一个 Rails 应用程序的草稿。它在我的本地 WEBRick 服务器上运行良好。

但是,在运行 Apache2 和 Passenger 的 Ubuntu VPS 上,当我在浏览器中导航到该应用程序时,我得到:

Error message:
no such file to load -- bundler/setup
Exception class:
LoadError

具有以下回溯:

0   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
1   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
2   /home/user/public/foo.com/config/boot.rb    6   
3   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
4   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
5   /home/user/public/foo.com/config/application.rb 1   
6   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
7   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
8   /home/user/public/foo.com/config/environment.rb 2   
9   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
10  /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
11  config.ru   3   
12  /usr/lib/ruby/vendor_ruby/rack/builder.rb   51  in `instance_eval'
13  /usr/lib/ruby/vendor_ruby/rack/builder.rb   51  in `initialize'
14  config.ru   1   in `new'
15  config.ru   1   

该应用程序是使用 Ruby v1.9.3 构建的(或者我是这么认为的),我已将其安装在 Ubuntu 上(在应用程序根目录中,ruby -v回报ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]).

As per 这个问题 https://stackoverflow.com/questions/7270210/no-such-file-to-load-bundler-setup-ruby-on-rails,我已经跑了gem install bundle and bundle install在应用程序根目录中。我还导入了正确的gemset从我的本地计算机到 VPS 应用程序根目录。

As per 这个问题 https://stackoverflow.com/questions/10499364/no-such-file-to-load-bundler-setup-in-rails-3-2-with-passenger,我尝试将宝石集更改为/home/user/.rvm/gems/ruby-1.9.3-p286@foo(其中 foo 是正在使用的 gemset 的名称),但这只会使回溯变得更长。

任何帮助进一步解决此问题将不胜感激!

EDIT:我最终通过卸载 Rails、RVM、Ruby(RVM 版本)和 Passenger,然后重新安装 Rails、Passenger 和 Ruby(但不是 RVM)来让我的应用程序正常运行。


如何设置正确的值

如果您不确定将passenger_ruby 设置为什么值,则可以按如下方式找到正确的值。

首先,找出乘客配置工具的位置并记下它:

    which passenger-config
    /opt/passenger/bin/passenger-config

接下来,激活您想要使用的 Ruby 解释器(如果适用,还有 gemset)。例如,如果您使用 RVM 并且使用 Ruby 2.2.1,您可能需要运行以下命令:

    rvm use 2.2.1

最后,使用其完整路径调用 Passenger-config,并传递 --ruby-command 作为参数:

    /opt/passenger/bin/passenger-config --ruby-command
    passenger-config was invoked through the following Ruby interpreter:
      Command: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
      Version: ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
      To use in Apache: PassengerRuby /usr/local/rvm/wrappers/ruby-1.8.7-   p358/ruby
      To use in Nginx : passenger_ruby /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
      To use with Standalone: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby /opt/passenger/bin/passenger start

    ## Notes for RVM users
    Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config --ruby-command'.

输出告诉您要设置什么值。

现在转到/etc/apache2/mods-available 目录中的passenger.conf 并粘贴上面显示的所需行。

现在执行以下命令,它对我有用,

    a2dismod passenger
    a2enmod passenger
    service apache2 restart
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache/Passenger 服务器上“没有要加载的文件——bundler/setup” 的相关文章

随机推荐