您應該避免的 10 個共軌編程錯誤

已發表: 2023-08-22

Ruby on Rails(通常稱為“Rails”)真正改變了 Web 應用程序開發的範式,強調其“約定優於配置”(CoC) 和“不要重複自己”(DRY) 原則。 超過370 萬個活躍網站採用 Ruby on Rails 作為框架。

該框架使每個Ruby on Rails 開發公司都能夠以更加簡單的方式構建強大的、可擴展的應用程序。 然而,鑑於 Rails 提供的功能過多,即使是最熟練的開發人員有時也會犯錯。

以下是 10 個典型的 Rails 編程疏忽及其補救措施:

1. 過度使用回調

錯誤:Rails 為開發人員提供了強大的回調功能。 這有助於實現對像生命歷程中特定事件的自動化。 儘管它們簡化了一些流程,但過度依賴可能會創建迷宮般的模型。

如何避免:在單個模型中交織多個回調可能會產生衝突或零星激活。 隨著這種複雜性的不斷增加,維護模型成為一項艱鉅的任務。

理想的方法是什麼? 遵守單一責任原則,確保每個類都有單一的變更原因。 如果回調與模型的主函數不同,那麼它可能更適合服務對像或裝飾器。

2. 忽略數據庫

錯誤:Rails 擁有無可挑剔的數據庫集成,常常使底層操作感覺不可見。 但這種無縫體驗有時會導致查詢未優化或速度下降。

如何避免:儘管 Rails 在橋接數據庫特性方面承擔了繁重的工作,但了解後端仍然至關重要。 注意 N+1 查詢等陷阱。

像“bullet” gem 這樣的工具可以幫助標記此類問題。 此外,熟悉數據庫索引機制。 定期搜索日誌以查找緩慢的查詢,以微調數據庫性能。

3. 不編寫測試或忽略失敗的測試

錯誤:Rails 中的測試提供了應用程序功能的藍圖,在重塑任務期間提供了緩衝。 然而,偶爾也會發生忽視測試或對失敗視而不見的情況。

如何避免:雖然在沒有測試的情況下製作應用程序最初看起來似乎很方便,但它會帶來潛在的挑戰。 採用 RSpec 和 MiniTest 等測試工具,旨在實現詳盡的測試覆蓋範圍。 利用 SimpleCov 等工具進行評估,並優先糾正失敗的測試。

4. 繞過驗證

錯誤:Rails 強大的驗證機制通常是開發人員的盟友。 但是,諸如 update_attribute 之類的方法可以迴避這些驗證,從而可能導致數據異常。

如何避免:數據的神聖性是不容談判的。 Rails 驗證在數據裝入數據庫之前確保數據一致性。 完全理解 update 和 update_attribute 等方法的細微差別。 除非明確有必要繞過驗證,否則請堅持傳統路徑,並嚴格記錄異常情況。

5. 不了解資產管道

錯誤:Rails 的資產管道旨在優化 CSS 和 JavaScript 等資產。 配置錯誤可能會阻礙資產交付或對性能產生不利影響。

如何避免:深入了解資產管道的工作原理,以防止部署出現問題。 確保生產階段嚴格的預編譯方案。 利用 image_tag 等 Rails 助手來實現優化後的無縫資產鏈接。

6. 不使用後台作業來執行耗時的任務

錯誤:在實時任務(如電子郵件發送)中讓用戶等待,並不是最好的用戶體驗。

如何避免:Web 應用程序應該是響應能力的代名詞。 將數據計算或發送電子郵件等要求較高的任務卸載到後台作業。 Sidekiq 或 Resque 等工具是為這些操作量身定制的,可確保您的主要應用程序保持敏捷並以用戶為中心。

7. 過度使用寶石

錯誤:雖然 Rails 生態系統擁有豐富的寶石,但不加區別地添加它們可能會使應用程序膨脹並引入潛在的安全風險。

如何避免:寶石非常棒,可以提供解決棘手問題的捷徑。 但更多並不總是更好。 您滑入應用程序口袋中的每顆寶石就像在鏈條上添加另一個鏈接 – 它可能是較弱的鏈接。

在決定使用寶石之前,請停下來思考一下。 查看它的更新頻率、支持社區以及維護情況。

為了幫助發現漏洞,Bundler-audit 等工具可以作為您的監視工具。

8. 不對數據庫列建立索引

錯誤:為了獲得最佳性能,涉及搜索或連接的數據庫列需要索引。 忽略這一點可能會大大減慢操作速度。

如何避免:隨著應用程序的成熟和數據的增加,數據庫保持敏捷至關重要。 將索引視為為您的數據庫提供了一張地圖,而不是讓它四處徘徊迷失。

優先考慮連接或搜索操作中涉及的列。 如果您不確定,rails_db 等工具可以讓您鳥瞰查詢的執行情況。

9. 使用默認錯誤頁面

錯誤:雖然 Rails 的默認錯誤頁面在開發環境中很有用,但它們可能會在生產中暴露不必要的信息,並且不方便用戶使用。

如何避免:在現實的生產世界中,一切都是為了平衡用戶體驗和安全性。 標準 Rails 錯誤頁面可能會無意中閃現一些敏感的系統信息。

此外,它們對於偶然發現它們的用戶來說並不完全令人安慰。 通過設計定制的錯誤頁面來改造您的應用程序。 這些應該是有用的、謹慎的、令人放心的,幫助用戶導航而不引起警報。

10.忽略安全最佳實踐

錯誤:Rails 就像一座具有許多內置安全功能的堡壘。 但如果你沒有正確使用它們,你可能就會敞開大門。

如何避免:網絡威脅有各種形式和規模——從偷偷摸摸的 SQL 注入到惡意跨站點腳本。 雖然 Rails 為您提供了 SQL 參數化和 CSRF 令牌等工具來抵禦許多此類威脅,但一個小小的失誤就可能讓您容易受到攻擊。

像brakeman這樣的工具可以成為您值得信賴的偵察員,指出潛在的安全風險。 安全應該始終是重中之重,定期審核和審查可以幫助保持強大的安全態勢。

結論

Ruby on Rails 雖然非常強大且對開發人員友好,但也並非沒有其複雜性。 避免上述錯誤將使您走上打造更高效、可維護和安全的 Rails 應用程序的道路。 請記住,掌握 Rails 的關鍵不僅在於了解其功能,還在於識別和避免潛在的陷阱。