在鏈接時,他說,他並不需要增加大量的「要求」語句,它一定是將文件添加到s.files
,s.executables
,並s.test_files
陣列 - 這些確定哪些文件被打包成寶石和什麼文件被忽略。從gem規範中可以看到,在某些目錄中,git所跟蹤的內容將包含在打包的gem中。
Ruby的require
是一個不同的故事。標準要求規則仍然適用。
當您運行require "foo"
時,Ruby的寶石系統通過爲Ruby添加一堆不同的地方來尋找「foo.rb」。如果"lib"
是您的寶石的唯一需求路徑,那麼當您的require "my_gem"
Ruby僅運行lib/my_gem.rb中的代碼時。如果lib/my_gem.rb不是require
gem中的任何其他文件,那麼Ruby沒有看到它們,所以當您嘗試使用這些文件中的類時,您會遇到未定義的常量錯誤。例如,你可以看看我寫的兩個簡單的寶石;兩者均以bundle gem
:HashToHiddenFields和SimpleStats開始。在這兩個寶石中,lib/中的主要Ruby文件都需要加載所有寶石才能正常工作。例如,hash_to_hidden_fields.rb需要action_view/helpers/hash_to_hidden_fields以便ActionView::Helpers::HashToHiddenFields
常量+模塊存在,因此我們可以將它包含到ActionView::Base
中。
希望能回答這個問題。我知道一段時間以來,Ruby對我的要求很模糊。
完美,謝謝Brian! – shanemcd 2012-04-23 14:15:17