有沒有辦法在內存中「重新加載」或「刷新」rubygem?當我在irb中玩時,偶爾我喜歡修改我的gem文件,如果我需要相同的gem,它不會更新到內存中並且輸出「false」。目前,我必須退出IRB,回到IRB,然後再次需要寶石,必須有更好的方式......這是什麼?在IRB中重新加載rubygem
19
A
回答
17
正如其他人所建議的那樣,您可以使用Kernel#load。但是,不要浪費你的時間找到並加載每個寶石文件作爲這方面的知識已被要求保存在$」的所有文件,這裏有一個重載IRB命令:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| load(e) }
end
例如,如果您用在IRB的hirb寶石,你只需重新加載有:
>> reload 'hirb'
如果因任何原因負載不工作(它是關於文件的擴展名不是要求是挑剔),你可以再要求任何文件先在$中刪除它的條目。有了這個建議,上面的命令是:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| $".delete(e) && require(e) }
end
選擇適合你的工作。我個人使用後者。
8
負載「filename.rb」
一次一個爲每個被改變......
6
的一種方法是使用Kernel#load
。你可以像使用Kernel#require
一樣使用它,除了你必須明確包含文件擴展名。然而,它有它的缺點(甚至像class Foo < Struct.new(:foo); end
那樣簡單的失敗,因爲它不可能改變類的超類),所以我也想知道更好的方法來做到這一點。
在rails中,你可以通過腳本/控制檯上的reload!
來實現,但我不知道他們使用了什麼樣的魔法。
This gist看起來很有前途,但我還沒有測試過它。
+0
'reload!'只應該加載'app /'目錄中的東西,僅此而已。這也是有限制的,這就是爲什麼很多類和控制器在開發環境中顯示爲匿名類的原因,所以它們可以在每個請求中完全處理並重新初始化。 – tadman 2010-08-12 01:15:37
相關問題
- 1. 重新加載irb中的rubygems?
- 2. 如何在IRB中重新加載腳本?
- 3. 重新加載Java Applet重新加載
- 4. 重新加載div重新加載XML
- 5. 重新加載不重新加載
- 6. 在p:dataTable重新加載數據在頁面重新加載
- 7. 在Android中刷新/重新加載CustomView
- 8. 無法在Rails中加載RMagic,但可以在IRB中
- 9. PRY或IRB - 重新加載類並忘記已刪除的功能
- 10. 在jqgrid中用setColProp重新加載searchoptions
- 11. 在TableViewCell中重新加載CollectionviewCell
- 12. 在c中重新加載linux服務
- 13. 如何在iPhone中重新加載UIPickerView?
- 14. 在jquery.simplemodal中重新加載內容,
- 15. 如何在JBoss中重新加載類
- 16. 在Iphone sdk中重新加載UIWebview
- 17. 在JFrame問題中重新加載GUI
- 18. 單獨在HTML中重新加載div
- 19. 如何在Java中重新加載JDialog?
- 20. 重新加載UIViewController
- 21. 重新加載UITableView
- 22. 重新加載UITableView
- 23. 重新加載searchResultsTableView
- 24. 重新加載uiviewcontroller
- 25. 重新加載ViewController
- 26. 重新加載searchResultsTableView
- 27. 重新加載UINavigationItem
- 28. 重新加載XPPageSelector
- 29. 重新加載tabbarviewcontroller
- 30. 重新加載/刷新ABPersonViewController
如果我要在哪裏去編碼這個功能? RubyGems的?該社區是否普遍接受新的功能拉取請求? – Schneems 2010-08-13 17:44:40