[英]Ruby Monkey Patched Logger does not work in Rails Console
[英]rails autoload not picking monkey-patched class
我正在使用Ruby 1.9.3-p392上的Rails 3應用程序(特別是3.2.13)。
在我的一個控制器中,“創建”操作可以接收圖像(作為ActionDispatch :: Http :: UploadedFile)
我試圖通過覆蓋其as_json方法來返回tempfile路徑而不是tempfile File對象本身,從而對ActionDispatch :: Http :: UploadedFile進行猴子補丁。
我這樣做的原因是因為我有一個數據庫記錄器,該記錄器通過在上下文上調用to_json來序列化日志上下文(包括請求參數)。 問題是在上述類上調用to_json會生成大量二進制數據,這些數據會填滿我的日志。
因此,我在“ lib”下創建了以下目錄結構:“ action_dispatch / http / uploaded_file.rb”在此文件中,該類名為ActionDispatch::Http::UploadedFile
我還通過以下方式將lib文件夾添加到application.rb: config.autoload_paths += Dir["#{config.root}/lib"]
問題是Rails不會加載我的猴子補丁類。 如果我在控制器文件的頂部添加require "action_dispatch/http/uploaded_file"
,則一切正常。
Rails為什么不自動加載我的猴子補丁類? 目錄結構和類命名是根據Rails約定進行的。
將代碼移到config/initializers/your_filename.rb
文件。 這些文件中的代碼在Rails應用程序引導過程中加載。
總體來說。 但是我不確定為什么要猴子修補ActionDispatch::Http::UploadedFile
類,因為我沒有關於您的應用程序的太多信息。
嘗試
config.autoload_paths += ["#{config.root}/lib"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.