我們的團隊正在開發一個新的應用程序,我們從Rails 3.1和Ruby 1.9.2開始 - 昨天晚上我把它帶到Ruby 1.9.3。在Rails中跟蹤依賴加載
一個我們正在使用的依賴鏈(css_parser)的寶石最後不得不在它需要「的iconv」,引發1.9.3 a deprecation warning看起來像這樣:
.../gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `block in require': iconv will be deprecated in the future, use String#encode instead.
起初我天真地指責,沒有更好的跟蹤軌道上,直到我沒有找到一個要求'iconv'在任何地方。
我跟蹤這件事的唯一方法是我開始在我的Gemfile中評論事情,然後我終於明白了加載irb並開始需要每個庫的輪流。我也可以在gems目錄下完成一個文件系統grep,但我不確定「需要'iconv'」是什麼引發了錯誤。
什麼是PITA。必須有一個更好的方法 - 只是在rake任務中執行加載軌道的操作並沒有削減它。是否有某種方式/任何方式觸發此跟蹤,這將顯示我在相對較長的庫依賴關係列表中的哪一行導致了棄用?
您可能會對http://stackoverflow.com/questions/660737/can-you-ask-ruby-to-treat-warnings-as-errors感興趣,它會詢問如何在提供警告時引發異常。 –
是的,我開始了重寫Kernel#warn的想法,當我開始搜索iconv錯誤的ruby代碼時,它很快就被打破了。我希望有更好的方法。 – jay