2012-12-28 89 views
1

我在/ lib中有一個類,我正在使用並通過控制檯進行測試。我正在對該類進行更改(例如添加調試器行)並使用reload!,但新的或已刪除的行未反映在控制檯正在運行的代碼版本中。如何卸載和加載課程?

嘗試這些:

  • config.cache_classes = false
  • reload!
  • config.autoload_paths += Dir["#{config.root}/lib/**/"]

    config.autoload_paths += Dir["#{config.root}/lib/service_processors"]

    config.autoload_paths << 'lib'

我正在運行一個保存的腳本來創建該類的一個實例。我嘗試在我的腳本頂部加載該類,但這似乎會導致一些意想不到的後果。

那麼,我該如何徹底卸載一個類,然後重新加載它?我在想腳本會強制卸載這個類,然後通過文件名加載這個類。

回答

1

不知道它這是問題,但在你的application.rb您需要添加下面一行:

config.autoload_paths += %W(#{config.root}/lib) 

其次,以確保類/模塊正確發現重裝,命名了遵循Rails約定。這意味着蛇模塊或類名應該提供文件名,不同的名稱空間(或嵌套)應該放在不同的文件夾中。

一些例子來使這更清楚:)

class SomeClass  --> /lib/some_class.rb 
class SomeHTTPStuff --> /lib/some_http_stuff.rb 
class API::Stuff --> /lib/api/stuff.rb 

HTH。

0

Rails的標籤後無效加入

嘛,加載類:

load "lib/class.rb" 

要重裝:

load "lib/class.rb" 

這些設置是不相關的。

+0

我嘗試過,但我有一些奇怪的行爲。 '那些設置是無關的' - 很確定他們確定什麼樣的環境被加載。也許我應該包含Rails標籤。 – jcollum

+0

@jcollum:哦。沒關係。在Rails中,這是一個不同的問題。' – Linuxios

+0

對不起,我有點浪費了你的一些時間。 – jcollum