幸运 Crystal - 更少的 Bug,更佳的性能,惊人的生产力
Paul Smith 在一年前创建了 Lucky web 框架 - 现在他与我们分享了它的状态。如果你想分享你自己的项目,联系我们 并分享你的想法。
Lucky 是一个用 Crystal 编写的功能齐全的 web 应用程序框架。使用 Lucky 时,你会编写更少的测试并拥有更少的 bug,因为它具有类型安全的查询、路由和记录保存功能。有了节省的时间,你就可以专注于构建最好的应用程序。
从第 1 周到第 1000 周
当我在大多数框架上开始一个应用程序时,我充满希望。我看到了产品的潜力,并且基于前几周的进展,事情将非常顺利。
几个月过去了……
我对产品的精彩未来充满了希望,变成了希望最新的提交不会破坏任何东西。
我开始更多地关注我的更改可能导致 bug 的方式,而不是如何使应用程序变得更好。我编写并运行测试,希望我已经考虑了所有可能出现问题的地方。 它变得越来越难保持简单和易懂。
Lucky 帮助你专注于构建应用程序
与其花费所有精力担心所有可能无法正常工作的方式,不如让计算机帮忙。毕竟,这是它的工作。
Lucky 的路由处理、记录保存 和 查询 都是类型安全的。甚至配置也会在编译时导致失败,因此你可以在升级依赖项时知道自己没有意外地弄乱任何东西。
这使你能够专注于如何通过快速、可靠且价值丰富的 web 应用程序取悦你的客户。
好吧,那么 Lucky 如何捕捉其他框架不会捕捉到的 bug 呢?
类型安全的查询
假设我们想获取所有姓名包含“kat”的用户。以下是如何在 Lucky 中做到这一点
# Will find users with the name "Kathryn", "Katy", etc.
UserQuery.new.name.ilike("kat%")
在 Lucky 中,你会得到特定于列类型的方法。这意味着像 lower
和 ilike
这样的方法仅适用于 String 列。如果你不小心尝试在整数列上调用 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 会为你捕捉到 bug 并给你一个有用的消息来指导你走向正确的方向
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 的独特之处。快乐编码!