2012-10-26 33 views
2

我想部署我的第一个Rails应用程序的草稿。它在我的本地WEBRick服务器上效果很好。“没有这样的文件加载 - 捆绑/设置”在Apache /乘客服务器上

但是,在运行的Apache2 &客运我的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])。

根据this question,我在应用程序根目录中运行了gem install bundlebundle install。我也从本地机器导入了正确的gemset到VPS应用程序根目录。

根据this question,我试图将gem设置更改为/home/user/.rvm/gems/[email protected](其中foo是正在使用的gemset的名称),但这只是使回溯时间更长。

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

编辑:我终于通过卸载轨,RVM,红宝石(RVM一个版本)&了我的应用程序功能重新安装导轨前,客运,客运&红宝石(但不是RVM)。

+0

只是为了确保:你已经运行'束install',对不对? – Jesper

+0

@jesper是我已经运行'捆绑安装' – amacy

+0

你是如何修复它的? – Tintin81

回答

0

尝试在您的虚拟主机的配置文件设置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红宝石,当你执行客运它仍然使用了红宝石,而1.8

+0

分别为每个虚拟主机设置GEM_HOME还允许您使用不同的应用程序使用不同的ruby和gems版本,因此它是定义它的最佳位置。 –

+0

感谢您的回复。我做了这个补充&重新启动Apache,但我仍然得到相同的回溯相同的错误。 – amacy

+0

乘客的RubyRoot设置错误,这个设置应该对乘客没有影响。 – mpapis

1

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

一旦你这样做,不要忘记a2dismod passengera2enmod passenger

+0

感谢您的回复。根据昨晚在#rubyonrails上的一次对话,我确信这个问题与Passenger无法找到Ruby的RVM版本有关。但是,在'/ etc/apache2/mods-available/passenger.conf'文件中进行修改会给我一个500错误。在Apache错误日志中没有关于错误的信息。 – amacy

1

如何设定正确的值

如果你不知道什么价值设置passenger_ruby到,那么你就可以找出正确的值,如下所示。

首先,找出位置乘客的配置工具,并注意到它:

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

接下来,启动Ruby解释器(如果适用,在宝石)要使用。例如,如果你在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-available目录下的passenger.conf并粘贴上面显示的所需行。

现在执行下面的命令和它的工作对我来说,

a2dismod passenger 
    a2enmod passenger 
    service apache2 restart 
相关问题