2011-11-26 75 views
10

我正在學習Ruby on Rails。目前我只在本地運行我的站點,在OS X Terminal中使用rails serverRails站點在生產環境中運行時會發生什麼變化?運行Rails站點:開發vs生產

  • 該網站仍然以rails server開頭嗎?
  • db與db的設置有什麼不同?

注意:我運行的Rails 3

+0

可能的重複:http:// stackoverflow。com/questions/1949229/change-a-rails-app-to-production –

+1

@ Black,對我來說,這看起來不像你鏈接的問題的重複。 – Andrew

+0

您需要添加生產參數'rails server -e production' – abhinav

回答

16

一個Rails應用程序可以調用生產rails server -e production運行,雖然你會在像乘客或薄,而不是被服務的時間99% WEBrick,這意味着有一個不同的命令來啓動服務器。 (例如thin start -e production

這是一個複雜的問題,但開始瞭解差異的最佳位置是查看特定的environment.rb文件。當導軌啓動時,它將從與被調用環境相匹配的環境文件開始,也就是說,如果您在開發時啓動它,它將加載您的development.rb文件,或者如果您正在生產,它將加載production.rb文件。環境的差異主要是各種環境配置文件中這些差異的結果。

基本上,如果一個Rails 3.1應用程序處於生產模式,那麼默認情況下它不會動態地編譯資產,並且很多緩存將在開發中不會發生。此外,當您收到錯誤消息時,它們將被記錄但不會呈現給用戶,而是將使用來自公共目錄的靜態錯誤頁面。

爲了更深入地瞭解這一點,我建議在閱讀相關的軌道指南:

Rails的初始化指南:http://guides.rubyonrails.org/initialization.html

Rails的配置指南:http://guides.rubyonrails.org/configuring.html

2

有可以使用兩個上下文字「生產」在這裏。其中之一是在生產模式下運行服務器。您可以在本地執行此操作,

RAILS_ENV=production ./script/server 

此配置可從config/environments/production.rb中找到。嘗試將此文件與config/environments/development.rb進行比較。像緩存類只有微妙的區別。開發模式使它更容易,以便它會立即響應您所做的任何更改。另外,如果您選擇以這兩種模式運行服務器,則會使用兩個不同的數據庫(默認情況下),即yourproject_development和yourproject_production。

另一方面,軌道部署到生產箱是不同的。你需要仔細挑選你的服務器。你可能不得不處理一個部署腳本,可能是capistrano。您可能還需要一個負載平衡器,如netgear。數據庫也可能需要深度考慮,如大小預期,主/從集羣等,

注意:我從來沒有使用過Rails 3.這個答案偏向於2.3.x.