2009-09-16 50 views
9

根據this post,要求rubygems是一個反模式。爲什麼「錯誤的要求rubygems」?

require 'rubygems' 

的說法似乎歸結爲這樣:

當我用你的庫,部署 的應用程序,或者運行測試,我可能不希望 使用RubyGems的。當您在代碼中需要 'rubygems'時,您將刪除我的 做出該決定的能力。我不能不要求rubygems,但你可以不要求它在第一個地方 。

但是,當您創建並與其他人共享代碼庫時,您對「需要」的任何Ruby庫都無法提供相同的參數嗎?

回答

9

的主要問題,要求RubyGems是,這將導致系統錯誤沒有安裝,即使RubyGems的他們確實有你想要的圖書館。

有些人在需要rubygems的時候通過調用LoadError來解決這個問題,但這很醜陋。

9

如果你看一下評論,你會看到作者說這

我並不想指出的一點是 是RubyGems是壞,或者人 不應該使用它。我使用的RubyGems和 認爲這是Ruby的 成功的關鍵部分 - 我只是沒有行 「規定‘RubyGems的’」在我 庫的源代碼的任何地方,因爲它不是 必要或方便,使得它 硬/其他 環境(如bundler,rip,GAE, debian,手卷等)不可能使用 庫,而不使用rubygems,這是經常重要的 。

其實我真的不同意他的意見之前,我讀了它,現在我做

0

Rubygems對於應用程序來說不是必不可少的,它只是提供庫的一種便捷方式。相比之下,使用的其他庫對應用程序是必不可少的。