"no such file to load -- bundler/setup" 在 Apache/乘客服务器上



我正在尝试部署我的第一个铁路应用程序的草稿。它在我本地的Webrick Server上效果很好。

但是,在我的Ubuntu VPS上运行Apache2&乘客,当我在浏览器中导航到该应用时,我会得到:

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上安装了该应用程序(在应用程序root中,ruby -v返回ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux])。

根据这个问题,我在应用程序根中运行gem install bundlebundle install。我还将正确的gemset从本地计算机导入到VPS App root。

根据这个问题,我试图将设置的宝石设置为 /home/user/.rvm/gems/ruby-1.9.3-p286@foo(其中foo是使用中的宝石的名称),但这只是使backtrace更长。

任何有助于进一步故障排除,这将不胜感激!

编辑:我终于通过卸载Rails,rvm,Ruby(RVM版本)&乘客在重新安装导轨之前,乘客&Ruby(但不是RVM)。

如何设置正确的值

如果您不确定要将pastenger_ruby设置为什么值,则可以找到正确的值。

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

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

接下来,激活您要使用的Ruby解释器(如果适用,则是GEMSET)。例如,如果您在RVM上并且使用Ruby 2.2.1,则可能需要运行此操作:

    rvm use 2.2.1

最后,用它的完整路径调用乘客 - config,通过 - 卢比命令作为参数:

    /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'.

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

现在goto pasterenger.conf in/etc/apache2/mods-可用目录和粘贴所需的行。

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

    a2dismod passenger
    a2enmod passenger
    service apache2 restart

您是否更改了/etc/apache2/mods-available/passenger.conf将路径更改为Ruby 1.9.3?

这样做后就不要忘记a2dismod passengera2enmod passenger

尝试在虚拟主机的配置文件上设置GEM_HOME:

<VirtualHost *:80>
  ServerName foo.com
  SetEnv GEM_HOME /home/user/.rvm/gems/ruby-1.9.3-p286
  DocumentRoot /home/user/public/foo.com/public
  <Directory /home/user/public/foo.com/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

问题似乎是当您执行bundle install时,它使用RVM Ruby,而当您执行乘客时,它仍然使用Ruby 1.8

最新更新