Ruby on rails &引用;没有要加载的文件--bundler/setup";在Apache/Passenger服务器上

Ruby on rails &引用;没有要加载的文件--bundler/setup";在Apache/Passenger服务器上,ruby-on-rails,deployment,rubygems,rvm,bundler,Ruby On Rails,Deployment,Rubygems,Rvm,Bundler,我正在尝试部署我的第一个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_requi

我正在尝试部署我的第一个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
returns
Ruby 1.9.3p286(2012-10-12修订版37165)[i686 linux]

根据,我已经在应用程序根目录中运行了
gem安装bundle
bundle安装
。我还将正确的
gemset
从本地机器导入了VPS应用程序根目录

根据,我尝试将gem集更改为
/home/user/.rvm/gems/ruby-1.9.3-p286@foo
(其中foo是正在使用的gemset的名称),但这只会延长回溯时间

如果您有任何进一步的故障排除帮助,我们将不胜感激


编辑:在重新安装Rails、Passenger和Ruby(但不是RVM)之前,我卸载了Rails、RVM、Ruby(RVM版本)和Passenger,终于让我的应用程序正常运行了。

尝试在虚拟主机的配置文件上设置GEM\u 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>

ServerName foo.com
SetEnv GEM_HOME/HOME/user/.rvm/gems/ruby-1.9.3-p286
DocumentRoot/home/user/public/foo.com/public
允许超越所有
选项-多视图

问题似乎是,当您执行
bundle install
时,它使用rvm ruby,而当您执行passenger时,它仍然使用ruby 1.8

您是否更改了
/etc/apache2/mods available/passenger.conf
以更改ruby 1.9.3的路径


完成此操作后,不要忘记
a2dismod乘客
a2enmod乘客

如何设置正确的值

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

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

    which passenger-config
    /opt/passenger/bin/passenger-config
接下来,激活您想要使用的Ruby解释器(如果适用,还有gemset)。例如,如果您在RVM上,并且使用Ruby 2.2.1,则可能需要运行以下命令:

    rvm use 2.2.1
最后,调用乘客配置及其完整路径,将--ruby命令作为参数传递:

    /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可用目录中的passenger.conf,并粘贴上面所示的所需行

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

    a2dismod passenger
    a2enmod passenger
    service apache2 restart

只是为了确保:您已经运行了
bundle安装
,对吗?@jesper是的,我已经运行了
bundle安装
,您最终是如何修复它的?为每个虚拟主机分别设置GEM_HOME还允许您使用不同的ruby和gems版本拥有不同的应用程序,因此这是定义它的最佳位置。感谢您的回复。我添加了此项并重新启动了Apache,但我仍然在相同的回溯中遇到相同的错误。乘客的RubyRoot设置错误,此设置应该不会影响乘客。感谢您的回复。根据昨晚在#rubyonrails上的一次对话,我确信问题与乘客无法找到Ruby的RVM版本有关。但是,在
/etc/apache2/mods available/passenger.conf
文件中进行您建议的更改会给我一个500错误。apache错误日志中没有关于该错误的信息。