2012-10-26 36 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 
相關問題