已經有上how到write RubyGems的答案的問題,但你應該寫一rubygem避免?什麼會給使用你的rubygem的人帶來問題?陷阱寫的RubyGems
5
A
回答
5
Gem Packaging: Best Practices給出了很多建議,其中包括一些
不污染全局負載路徑。理想情況下,您的
lib
目錄中只有foo.rb
,並將所有其他文件放入lib/foo
。不要使用
__FILE__
不require
文件。不要依賴加載路徑以外的任何東西。文件夾可能與原始版本中的結構不同。例如,不要使用類似於
VERSION = :: File.read(:: File.join(:: File.dirname(FILE),「..」,「..」,「VERSION 「))。strip
不要在
lib
內管理$LOAD_PATH
。提供
VERSION
常數。不要依賴rubygems。使用你的代碼的人可能不會使用rubygems,而是使用其他一些包裝系統(或者沒有包裝系統)。同樣,不要在代碼本身中提到版本依賴關係,或者
rescue Gem::LoadError
。
Rubygems dependencies. Please...認爲你不應該列出可選的運行時依賴,並應自運行時依賴分開開發商。
From my own experience:如果不出意外,嘗試建立和釋放到野外之前在本地安裝您的寶石。它避免了牛皮紙袋的泄漏。
相關問題
- 1. 現代重寫陷阱/ ABC
- 2. 從MS Access的空陷阱的陷阱
- 3. 陷阱
- 4. 軟件陷阱vs硬件陷阱
- 5. FileSystemWatcher的陷阱
- 6. ReSharper的陷阱
- 7. 解析陷阱
- 8. 春季陷阱
- 9. PyThreadState_SetAsyncExc陷阱?
- 10. 擊:陷阱
- 11. Java JIT陷阱
- 12. 形式 - 陷阱
- 13. SetTimer()陷阱
- 14. Thread.local的陷阱[:current_user]
- 15. .NET中ClickOnce /智能客戶端部署的陷阱/陷阱
- 16. C++程序員有哪些常見的Java陷阱/陷阱?
- 17. 陷阱WM_SETFOCUS消息
- 18. 生成SNMP陷阱
- 19. 陷阱ORA錯誤
- 20. C++模板陷阱
- 21. rmi回調陷阱?
- 22. 安卓:AlarmManager陷阱
- 23. 混淆SNMP陷阱
- 24. Singleton Design Pattern:陷阱
- 25. 陷阱os.Exit在golang
- 26. 清除SNMP陷阱
- 27. Firefox 6 JavaScript陷阱
- 28. MySQL事務陷阱
- 29. 調用ToString()陷阱
- 30. 陷阱退格鍵
絕對是一個很好的和正確的書面記錄,特別是所提到的「寶石包裝:最佳實踐」 – 2010-04-11 06:58:06
你的最後一點是非常重要的。它基本上可以被翻譯爲:「編寫Ruby Gems的一個重要問題不是編寫Gems,而是編寫庫。」 – 2010-04-11 08:38:16
@Jörg:非常像禪宗。 (「寶石包裝:最佳實踐」的最後一點,而不是「來自我自己的經驗」) – 2010-04-12 23:29:05