2012-06-07 125 views
8

在我當前的ruby on rails項目中,我使用webrick(默認)服務器進行開發。我有一個單獨的服務器來測試應用程序,我想將環境設置爲產品。我使用以下行來在生產模式下運行服務器。在webrick服務器的生產模式下運行導軌

rails s -e production 

的問題是,它完美的作品,如果它的發展模式,但在服務器模式我收到以下錯誤:

Started GET "/" for 172.20.7.94 at Thu Jun 07 10:35:45 +0530 2012 
    Processing by FrontendController#dashboard as HTML 
Rendered frontend/dashboard.html.erb within layouts/frontend (3.0ms) 
Completed 200 OK in 50ms (Views: 22.0ms | ActiveRecord: 0.0ms) 


Started GET "/assets/frontend-datauri.css" for 172.20.7.94 at Thu Jun 07 10:35:4 
6 +0530 2012 
    Processing by Jammit::Controller#package as HTML 
    Parameters: {"extension"=>"css", "package"=>"frontend-datauri"} 
Completed 500 Internal Server Error in 190ms 

NameError (uninitialized constant POpen4::Open4): 


Started GET "/assets/frontend.js" for 172.20.7.94 at Thu Jun 07 10:35:46 +0530 2 
012 
    Processing by Jammit::Controller#package as 
    Parameters: {"extension"=>"js", "package"=>"frontend"} 
Completed 500 Internal Server Error in 105ms 

NameError (uninitialized constant POpen4::Open4): 

我使用Jammit和POpen4和我的軌道版本:3.0.9。 Ruby版本1.8.7。我目前無法升級版本,因爲其他幾個開發人員都參與了該項目。任何人都可以爲我提供解決方案。

謝謝

+2

第一件事:在生產中使用的WEBrick是一個壞主意。它不是爲此而設計的,而且表現非常差。使用'thin','unicorn',...第二件事:看起來寶石POpen4不在你的包中。你有沒有把你的POpen4 gem只放在你的gem文件中的':development'組中?或者用'--without'選項運行'bundle install'不包括生產gem? –

+0

其實我沒有提到任何在Gemfile中的POpen4也是使用webrick進行生產並不是一個好主意,但我在測試服務器上使用它來確保它完美地工作 – Mujahid

回答

1

非常感謝所有試圖幫助我解決此問題的人。我安裝了CentOS,一切都已經修復並且運行順利。

這可能是一些問題與Windows服務器2008年,我用以前

非常感謝這

0

最好的做法是在你的Gemfile中指定你的依賴關係。

的Gemfile:

... 
gem 'popen4' 
... 

,然後運行bundle install打造寶石的特定束爲您的應用程序。

否則你的應用程序依賴於你在本地機器上安裝的東西(我想通過gem install popen4)。

在這裏您的生產機器上沒有安裝寶石POpen4 ...所以其他快速(但不推薦)的解決方案是在您的生產機器上手動安裝寶石gem install popen4

+0

我添加了它,但仍然沒有運氣:(我認爲問題來自Jammit壓縮機,因爲它使用YUI壓縮機將有一個問題在那裏 – Mujahid

+0

@ Mujahid哼哼好吧我剛剛明白,popen4是不是你的依賴之一,但依賴於jammit> ui-compressor ...所以你應該重新命名你的問題,它根本不是一個Webrick問題;)但是,你的包不包含POpen4 ...你可以嘗試刪除你的'Gemfile.lock'文件並運行'bundle install'到重新計算依賴關係... –

+0

@Mujahid當我說你在生產機器上運行bundle install ==>而不是在你的本地開發者機器上。 –

相關問題