簡體   English   中英

什么是“重新加載!”的原因似乎並不總是在Rails控制台中工作?

[英]What are reasons “reload!” doesn't always seem to work in the Rails console?

我只是掌握了Rails控制台,並發現它可以快速測試我的類中的方法。 我知道我可以對我的模型進行更改

> reload!

抓住這些更新,但有時我會發現它似乎沒有重新加載我的最新代碼。 Rails是否在某處緩存代碼?

在一個非常簡單的偽示例中,我可能在第100行上有錯誤的代碼:

100: u = User.alll

在Rails控制台中,當我運行此方法時,我可能會收到類似於以下內容的錯誤:

NoMethodError: undefined method `alll' for User:Class ... on line 100

然后修改我的代碼,修復錯誤

100: u = User.all

然后重新加載:

> reload!

然后,當在這個類中調用具有正確代碼的方法時,它仍會說

NoMethodError: undefined method `alll' for User:Class ... on line 100

如果清楚,錯誤是固定的,並且違規行甚至不再在第100行。 有沒有辦法強制/硬重置“重新加載!” 命令?

我的猜測是你正在做的事情:

  1. 創建User實例
  2. 在實例上調用someMethod
  3. 你得到一個錯誤,然后去解決它
  4. reload!
  5. 在現有實例上調用someMethod並再次獲取錯誤

所以你在一個本身沒有重新加載的實例上調用該方法。 它的類已被重新加載,但實例已經在內存中 - 有bug和所有。

這至少是我的猜測(不是100%肯定)。

點是,如果你在reload! 創建一個新實例reload! 並在新實例上調用您的方法,它應該停止抱怨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM