Ruby on Rails 生產環境配置的一些問題

公司選擇 Spree 電商框架作為基礎來進行業務拓展,開發環境運行時十分緩慢,按照官方的建議,將 development.rb 中 config.assets.debug 的配置項設置為 false,一定程度上速度有所提升,但是還是不夠明顯,看后臺日志顯示很長時間都被花費在前臺頁面的渲染上,所以想嘗試一下以生產模式運行時性能如何。

直接運行 rails s -e production 在瀏覽器中打開后報錯,查看日志錯誤顯示如下:

The asset "favicon.ico" is not present in the asset pipeline.

項目開啟了 asset pipeline,卻沒有在開啟服務器之前進行資源的預編譯,執行命令補上這一步,運行結束之后會在 public 生成 assets 文件夾,這部分知識可參考官方文檔

  $ RAILS_ENV=production rake assets:precompile

重新啟動服務器之后沒有出現 500 錯誤,但是網站所有圖片均無法顯示:

圖片丟失

根據(rails 預編譯之后圖片無法顯示)的關鍵字搜索之后,進入了 Ruby China 的一篇帖子,看完評論說解決方案是需要進行如下設置:

  config.assets.compile = true

重新啟動服務器之后確實都正常,但因為剛剛那條配置是打開了實時編譯的開關,所以效率會相對較為緩慢,不是最佳的解決方案。仔細看了文章評論之后,發現可能應該是需要打開另外一個配置的開關:

  config.assets.compile = false
  config.serve_static_assets = true

然后重新執行命令進行預編譯,啟動服務器,大部分圖片都顯示出來了,但還是有少部分未顯示,調研發現還有一個設置需要配置:

  config.public_file_server.enabled = true

重試之后,一切都顯示正常了。原因大概是代碼中可能有未通過 assets pipeline 的方式進行圖片的引用,而是直接請求 public 文件夾下非 assets 目錄的資源,所以需要打開這一開關。

在搜索過程中,發現有篇博文說的比較詳細,給了很大幫助,鏈接在這

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容