ruby-on-rails - 控制台应用程序的 Boson vs Thor

标签 ruby-on-rails ruby console thor

有没有人同时使用过BosonThor

Thor 非常受欢迎,拥有比 Boson 更多的追随者和贡献者,但 Boson 看起来比 Thor 强大得多,而且架构经过深思熟虑。

在玻色子中你:

  • 可以添加在控制台和 ruby​​ 环境中都使用的方法。因此,您不必同时拥有用于控制台的 Thorfile 和用于 ruby​​ 的 gems。
  • 可以有别名。
  • 不必安装脚本文件,只需将它们放在 ~/.boson/commands 中即可。每次更新后,我总是不得不为卸载和安装 Thorfiles 而苦恼(在编辑源代码时可能每分钟都要这样,非常令人沮丧)。
  • 有比 thor 更好的命令输出。
  • 不必像在 Thor 中那样手写参数描述。
  • 使用模块,这比使用类更好,因为您可以在其他模块中包含模块。
  • 自动将开源代码片段(例如来自 Gist)包装在一个模块中,它可以立即与 Boson 一起使用。
  • 对您的方法结果有不同的看法。
  • 不必重新编码片段中的任何内容以适合 Thor,因为它仅使用 native ruby​​ 代码(模块)。这意味着,如果有一天您不想使用 Boson,则不必重新编码所有内容,而如果您使用的是 Thor,则必须重新编码。
  • API记录得更好 - 就像每节课中的教程。
  • 您可以只在您的 ruby​​ 脚本中包含“玻色子”模块并直接使用它们,这是 Thor 无法做到的,因为它仅适用于 Thor。您不能与其他 Thor 类共享 Thor 方法(不是混合类)

仅通过阅读文档并使用 Boson 玩了几分钟,我就注意到了所有这些好处。

我应该仅仅因为 Thor 更受欢迎而使用它(因为我找不到它比玻色子闪耀的任何其他东西),还是我应该冒玻色子可能在一段时间后不再维护的风险,因为作者是唯一的贡献者?

虽然只是一个人,但您可以看到他是如何以极快的速度和出色的质量编写代码的。如果有更多像他这样的贡献者为该库做出贡献,那就太好了。我真的希望更多的 ruby​​ists 会使用它,因为它有很大的潜力成为所有系统自动化的脚本框架。就像后端的 Rails。当您提交问题时,作者确实可以非常快速地帮助您解决问题。

Thor 仅适用于外壳(我猜这是它的用途),而我认为玻色子具有 3 个主要功能。它允许您让代码在 shell 和 ruby​​(irb 和脚本)中运行,并且您可以很好地收集所有 Ruby 代码,无需修改。

我一直想要一个框架作为我的后端脚本框架,现在我不必重新发明轮子了。看来玻色子可能就是它。

有人使用过这两个库并可以分享一些想法吗?

最佳答案

免责声明:我是玻色子的作者。

两者我都用过,thor 是启发我编写 boson 的灵感。虽然两者有重叠的功能,但我认为它们有不同的目标。

Thor 是一个脚本框架,它可以快速而精美地为应用程序提供命令行界面。 The 116 gems (including rails)依赖它的人就是很好的证据。最初我尝试使用 thor 来管理和使用代码片段,但过了一段时间后,强制命名空间、缺少别名、编写冗余的使用行和糟糕的搜索让我意识到 thor 并未针对管理代码片段进行优化。

所以我写了 boson 来管理我以前放在 ~/bin with this philosophy in mind 中的无数 ruby​​ 片段. At 400+ commands ,我能够立即找到任何 ruby​​ 片段并将其用作成熟的可执行文件。尽管您似乎了解玻色子的一些优势,但这里有太多功能无法一一列举。至于作为唯一的贡献者,我欢迎任何人贡献他们的想法。

如果要对两者进行一个简单的比较,我会说 thor 的核心是为项目和应用程序创建可执行文件,而 boson 的核心是为用户创建它们。

关于ruby-on-rails - 控制台应用程序的 Boson vs Thor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697308/

相关文章:

ruby-on-rails - Rails format.js 和 remote true

ruby-on-rails - 如何从 Rails 控制台列出 postgres 中的模式?

ruby-on-rails - 如何在 Rails 中解析传入的 POST 请求的 json?

c++ - 如何让敌人随机循环并在一定距离内跟随玩家? C++ 控制台游戏

c++ - 如何在 C++ 中创建一个简单的 Qt 控制台应用程序?

javascript - Rails 应用程序中最简单的可见计时器

ruby - 存储类别的数据模型(多个父节点)

ruby-on-rails - Rails - 检测到急切加载

ruby - 使用 Nokogiri 选择节点,然后选择下一个指定节点

symfony - 如何将依赖项注入(inject) Symfony 控制台命令?