使用 Crystal 讓你事半功倍 - 更少的錯誤、更優異的效能、難以置信的生產力
Paul Smith 在一年前創建了 Lucky 網頁框架 - 而他現在要和我們分享它的狀況。如果您想分享您自己的專案,請 聯繫我們 並告訴我們您的想法。
Lucky 是一個用 Crystal 寫成的功能齊全的 Web 應用程式框架。由於其型別安全的查詢、路由和記錄儲存功能,使用 Lucky 時,您將編寫更少的測試並減少錯誤。有了節省的時間,您就可以專注於建構最好的應用程式。
第一週到第一千週
當我開始使用大多數框架開發應用程式時,我充滿希望。我看到了產品的潛力,並且基於最初幾週的進展,一切都會非常順利。
幾個月過去了...
我對產品美好未來的希望變成了希望最新的提交不會破壞任何東西。
我開始更加關注我的變更可能會如何導致錯誤,而不是如何讓應用程式更好。我編寫並執行測試,希望我已經考慮到所有可能出現的問題。它變得越來越難以保持簡單和易懂。
Lucky 幫助您專注於建構您的應用程式
與其將所有精力都花在擔心所有可能無法運作的方式上,不如讓電腦來幫忙。畢竟,這就是它的工作。
Lucky 的路由處理、記錄儲存和 查詢 都是型別安全的。即使是組態也會在編譯時導致失敗,因此您知道在升級相依性時沒有意外地搞砸任何事情。
這讓您可以專注於如何透過快速、可靠且充滿價值的 Web 應用程式來讓您的客戶感到高興。
好吧,那麼 Lucky 是如何捕捉其他框架無法捕捉到的錯誤的呢?
型別安全的查詢
假設我們想要取得所有名稱包含「kat」的使用者。以下是在 Lucky 中執行此操作的方式
# Will find users with the name "Kathryn", "Katy", etc.
UserQuery.new.name.ilike("kat%")
在 Lucky 中,您將獲得特定於欄位類型的方法。這表示像 lower
和 ilike
這類方法僅適用於字串欄位。如果您不小心嘗試在整數欄位上呼叫 lower
,Lucky 會在編譯時通知您。如果您將 name
欄位重新命名為 full_name
,Lucky 會在編譯時顯示您也需要進行該變更的所有位置。
如果您嘗試將 nil
傳遞給不允許 nil
的欄位,Lucky 會在編譯時通知您,以便您可以避免可怕的邏輯錯誤和 nil
錯誤。
永遠不用再擔心 HTTP 動詞
Rails 中比較煩人的問題之一是忘記為連結設定正確的 HTTP 方法,即使您的路徑正確也是如此。
以下是刪除註解的範例
link_to "Delete", comment_path(@comment)
您能發現問題嗎?路徑是正確的,但我忘記指定 HTTP 動詞。對於剛接觸 Web 開發或 REST 的團隊成員來說,這尤其令人困惑。
在 Lucky 中,HTTP 動詞會自動用於連結、表單和按鈕。您甚至永遠不必考慮它。它就能正常運作。
自動為您設定正確的動詞 (DELETE)
link "Delete comment", to: Comment::Delete.with(@comment.id)
在動作中捕捉遺失的條件式
假設您的任何動作都有像這樣的條件式
class SamlSignIns::Create < BrowserAction
action do
if user.present? && sso_enabled?
redirect to: SamlSignIns::New
elsif user.present? && !sso_enabled?
flash.info = "This email address does not have SSO enabled"
redirect to: SignIns::New
end
end
end
Lucky 會為您捕捉到錯誤,並提供有用的訊息來引導您朝正確的方向前進
SamlSignIns::Create returned Lucky::Response | Nil, but it must return a Lucky::Response.
Try this...
▸ Make sure to use a method like `render`, `redirect`, or `json` at the end of your action.
▸ If you are using a conditional, make sure all branches return a Lucky::Response.
在這種情況下,我們忘記新增一個 else
條件,讓使用者知道我們無法找到他們的使用者帳戶。Lucky 非常有用,可以幫助我們朝著這個解決方案邁進。
這只是 Lucky 可以協助您專注於建構最佳應用程式的其中一個範例。查看「為什麼要使用 Lucky?」和「設計 Lucky:堅如磐石的動作和路由」以瞭解更多資訊。
試用 Lucky
我們設計 Lucky 的目的是幫助人們避免常見的陷阱,並讓程式設計在專案的多年後仍然充滿樂趣。如果您對 Lucky 感興趣,請在 Github 上 給我們一個星星、查看指南或 深入瞭解 Lucky 的獨特之處。祝您編碼愉快!