web開發|Rails 7.0 發布,實現愿景:真正的全棧 Web 開發方法

web開發|Rails 7.0 發布,實現愿景:真正的全棧 Web 開發方法

【web開發|Rails 7.0 發布,實現愿景:真正的全棧 Web 開發方法】出品|開源中國
作者|羅奇奇
Rails 是一個 Web 應用程序框架 , 是 Ruby 最早也是最出名的一個框架 , 其中包括根據模型-視圖-控制器(MVC) 模式 , 創建 Web 應用程序所需的所有內容  。 Rails 可以說是 MVC 開發的先驅者 , 了解 MVC 模式是了解 Rails 的關鍵 。
Rails 7.0 是一個大版本 , 實現了一個愿景:一種真正的全棧 Web 開發方法 , 以可以同時應對前端和后端的挑戰 。 比如 Rails 應用有新的默認選擇: Hotwire , 它的 Turbo 和 Stimulus 組合幾乎包含所有增強用戶體驗的工具;又或者無需將 Webpack 與 Webpacker 緊密耦合 , Rails 7.0 可以使用新的jsbundle -rails集成將任何 JavaScript 打包器松散結合 , 無論是 esbuild、rollup.js 或是Webpack 。
此版本還有相當多更新項 , 下面摘錄一些較為重要的更新內容作介紹:
活動記錄(Active Record)支持工作中加密Rails 7.0 向 Active Record 添加了活動記錄加密屬性(encrypted attributes to Active Record) , 除了傳統的靜態和傳輸中覆蓋之外 , 應用程序還可以提供工作中加密(at-work encryption) 。
加密敏感屬性會增加一個額外的安全層 , 就算惡意攻擊者獲取了數據庫、快照或者日志的訪問權限 , 也看不懂加密信息 , 另外 , 通過使用 Active Record Encryption , 可以在代碼級別中定義應用敏感信息的構成 。
點此查看關于使用加密屬性的完整指南 。
使用 Marginalia 樣式標記跟蹤查詢來源大概十年前(2012) , Rails 引入基于 Basecamp 的 Marginalia:使用 SQL 注釋標記來跟蹤查詢來源 。 現在這個外部 gem 已經作為 QueryLogs 上傳到 Active Record 中 。
異步查詢加載如果有一個控制器操作需要加載兩個不相關的查詢時 , Rails 7.0 可以通過Relation#load_async并發執行 。
比如:以前如果有三個復雜的查詢 , 每個查詢需要 100 毫秒 , 那么就必須先花費 300 毫秒來逐一執行它們 。 現在可以并行運行 , 總共只花費 100 毫秒 。
ZeitwerkRails 的自動加載是它的特性之一 , 不過老的 const_missing 方法有一系列問題 , 因此引入新的Zeitwerk 代碼加載器完全取代它 。 比較老的應用升級會比較麻煩 , 可查看完整的升級指南 。
其他一些亮點

  • 默認情況下 , Spring不再啟用 。
  • ActionController::Live#send_stream可以輕松地傳輸動作控制器實時生成的流文件 。
  • 現在并行測試將比較 CPU 內核計數和測試計數 , 并相應地調整并行度 。
  • Active Storage 現在使用更快、更安全的libvips作為默認變體處理器 。
更多詳盡內容可以在更新公告中查看 。

    相關經驗推薦