1

我試圖部署一個Rails應用程序(它在開發中工作正常)到生產服務器上。我已經安裝並配置了Apache,Passenger和必要的gem。我重新啓動Apache並導航到服務器後,我得到以下錯誤:Rails/Passenger:沒有這樣的文件加載 - 錢(MissingSourceFile)

Exception PhusionPassenger::UnknownError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- money (MissingSourceFile)) 

gem list money顯示:

*** LOCAL GEMS *** 

money (3.0.5) 

在服務器上的irb會議:

irb(main):001:0> require 'rubygems' 
=> true 
irb(main):002:0> require 'money' 
=> true 

創業板要求在config/environment.rb

require 'money' 

這是怎麼回事?

編輯:寶石被安裝爲根:

# ls -l /usr/lib/ruby/gems/1.8/gems/money-3.0.5/lib 
total 8 
drwx------ 2 root root 4096 Sep 2 10:26 money 
-rw-r--r-- 1 root root 1284 Sep 2 10:26 money.rb 

編輯2:具有帶路障沒有成功後,我意識到,乘客是那種上作出了Ruby企業版一起去,所以我試着安裝它。之後,我使用Ruby Enterprise的gem版本來安裝所有必需的gem。現在,當我重新啓動Apache並導航到我的服務器,我得到:

Exception LoadError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- logger) 

我需要記錄無論是在舊的或新版本的Ruby沒有問題:

# which irb 
/usr/bin/irb 
# irb 
irb(main):001:0> require 'logger' 
=> true 
irb(main):002:0> exit 
# /opt/ruby-enterprise-1.8.7-2010.02/bin/irb 
irb(main):001:0> require 'logger' 
=> true 

一定有什麼回事路徑或權限,但我完全按照Passenger和Ruby Enterprise Edition安裝程序中的說明進行操作。任何其他想法?

回答

0

謝謝大家的幫助。我們進行了一些調查,發現一些必需的文件(我相信寶石本身)安裝了錯誤的權限(運行Apache/Passenger的用戶無法讀取)。我不知道爲什麼發生這種情況,因爲它們是以root的方式安裝的(也許一些非標準的umask是問題?),但是修改這些文件的權限可以解決問題。

2

Apache/Passenger以root身份(或www-data)運行ruby進程,確保您沒有將Gem安裝在本地存儲庫中。

您可能需要在安裝gem之前成爲超級用戶。


答2:

,規定創業板不使用要求,但使用

config.gem "money" 
+0

我編輯了我的帖子。該gem作爲根安裝,似乎是世界可讀的。 – jrdioko 2010-09-02 19:12:30

+0

更新了我的答案。 – 2010-09-02 20:14:18

+0

謝謝。錢寶石文檔(http://money.rubyforge.org/)說要使用'require'money''。用'config.gem'money'替換我的environment.rb中的require會導致Passenger給我錯誤:'未定義的局部變量或方法'config'for main:Object'。另外,我應該提及在我的開發環境中使用相同代碼的一切工作正常。 – jrdioko 2010-09-02 20:36:19

1

您使用兩個相同版本的紅寶石正確的方法?

+0

是的,我相信。 – jrdioko 2010-09-02 20:31:16

+0

也許使用乘客3,看看它是否有同樣的問題? – rogerdpack 2010-09-03 16:13:48

+0

這必須是一個權限或路徑問題,我想......我寧願留在目前的穩定版本的乘客。 – jrdioko 2010-09-03 18:38:48

相關問題