簡體   English   中英

導軌自動加載不選擇猴子修補類

[英]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.

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