Boson 超越Rake的另一選擇?

2021-09-16 18:11:55 字數 1706 閱讀 4463

相信大多數ruby開發者對rake都不陌生,而那些rails開發者更是每天都要與它打交道。每天看著task...do...end,你需要一些新鮮玩意兒了,gabriel horner為我們帶來了乙個新的命令/任務框架,那就是boson。

\u0026#xd;\n

boson借鑑了rake和thor的成功經驗,同時也做了一些創新。例如,你既可以像使用rake那樣,通過命令列來執行boson的命令,也可以在irb中執行所有這些命令。

\u0026#xd;\n

boson 的設計理念非常簡單——任務即方法,方法即任務。boson庫就是普通的ruby模組,而boson命令就是這些模組中的方法,每個庫還能擁有自己的名字空間。所有的命令都是純ruby寫的,對boson沒有任何依賴,當你決定不再使用boson時,仍然可以在irb中執行它們。gabriel的部落格中詳細說明了如何在命令列及irb中使用boson,以及如何用boson來增強irb。

\u0026#xd;\n

例如,可以像下面這樣在bash中執行boson命令:

\u0026#xd;\n

\u0026#xd;\nbash\u0026gt; boson libraries\u0026#xd;\n+----------+----------+------+--------------+\u0026#xd;\n| name     | commands | gems | library_type |\u0026#xd;\n+----------+----------+------+--------------+\u0026#xd;\n| core     | 6        |      | module       |\u0026#xd;\n| web_core | 3        |      | module       |\u0026#xd;\n+----------+----------+------+--------------+\u0026#xd;\n2 rows in set\u0026#xd;\n
\u0026#xd;\n

建立命令也比較簡單,只需簡單地定義乙個模組和相應的方法就ok了。

\u0026#xd;\n

\u0026#xd;\n# let's list boson's default libraries\u0026#xd;\nmodule brain\u0026#xd;\n  # help brain live his dream\u0026#xd;\n  def take_over(destination)\u0026#xd;\n    puts \"pinky, it's time to take over the #!\"\u0026#xd;\n  end\u0026#xd;\nend\u0026#xd;\n
\u0026#xd;\n

將上面的**放置在~/.boson/commands/brain.rb中,隨後呼叫:

\u0026#xd;\n

\u0026#xd;\nbash\u0026gt; boson take_over farm\u0026#xd;\npinky, it's time to take over the farm!\u0026#xd;\n
\u0026#xd;\n

究竟boson這只新輪子有多好,它是否能夠超越rake?每個人都有自己的評判標準,例如john barnette在最近的一篇部落格上表示——把rake當作乙個封裝任務的引擎固然沒錯,但那並不是rake的全部,它更是乙個解析依賴的引擎。現在要給出乙個結論,可能為時尚早,不妨先gem install boson,與boson親密接觸一下吧!

開放的另一面

每次只要一有機會,google就會宣稱他們從android的開源中獲得了巨大利益,勝過ios,這顯然不尊重事實 android在走下坡路了,從使用者體驗角度來說,這個系統真的讓人有點不爽。亞馬遜霸佔了android,並為了實現自己的目的而逐漸將其關閉,google現在面臨的問題就是亞馬遜的這些目的非...

printf函式的另一用法

思考 如果 printf 函式裡面控制輸出的一句話裡包含數字,我想讓這些數字隨著我的輸入數值而打 印什麼,怎麼做?例 printf 數字1 數字2 我想讓兩個等號後面的兩個數字,是由我填多少就列印多少,怎麼做?解決 printf 數字1 d 數字2 d 10,20 那麼,程式會自動把 10放在前面乙...

另一顆樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。解題思路 先從跟結點開始,看兩顆樹的根節點是否相同,然後遞迴遍歷兩棵樹的左右子樹,如果都相同返回true 否則讓樹s左右子樹...