相信大多数 Ruby 开发者对 Rake 都不陌生,而那些 Rails 开发者更是每天都要与它打交道。每天看着 task…do…end,你需要一些新鲜玩意儿了, Gabriel Horner 为我们带来了一个新的命令 / 任务框架,那就是 Boson 。
Boson 借鉴了 Rake 和 Thor 的成功经验,同时也做了一些创新。例如,你既可以像使用 Rake 那样,通过命令行来执行 Boson 的命令,也可以在 irb 中运行所有这些命令。
Boson 的设计理念非常简单——任务即方法,方法即任务。Boson 库就是普通的 Ruby 模块,而 Boson 命令就是这些模块中的方法,每个库还能拥有自己的名字空间。所有的命令都是纯 Ruby 写的,对 Boson 没有任何依赖,当你决定不再使用 Boson 时,仍然可以在 irb 中运行它们。Gabriel 的博客中详细说明了如何在命令行及 irb 中使用 Boson ,以及如何用 Boson 来增强 irb 。
例如,可以像下面这样在 Bash 中执行 Boson 命令:
bash> boson libraries +----------+----------+------+--------------+ | name | commands | gems | library_type | +----------+----------+------+--------------+ | core | 6 | | module | | web_core | 3 | | module | +----------+----------+------+--------------+ 2 rows in set
创建命令也比较简单,只需简单地定义一个模块和相应的方法就 OK 了。
# Let's list boson's default libraries module Brain # Help Brain live his dream def take_over(destination) puts "Pinky, it's time to take over the #{destination}!" end end
将上面的代码放置在~/.boson/commands/brain.rb
中,随后调用:
bash> boson take_over farm Pinky, it's time to take over the farm!
究竟 Boson 这只新轮子有多好,它是否能够超越 Rake?每个人都有自己的评判标准,例如 John Barnette 在最近的一篇博客上表示——把 Rake 当作一个封装任务的引擎固然没错,但那并不是 Rake 的全部,它更是一个解析依赖的引擎。现在要给出一个结论,可能为时尚早,不妨先 gem install boson,与 Boson 亲密接触一下吧!
评论