我正在使用ruby 1.9.3-p392上的Rails 3应用程序(特别是3.2.13)。
在我的一个控制器中“创建”动作可以接收图像(作为ActionDispatch :: Http :: UploadedFile)
我试图通过覆盖其as_json方法来monkeypatch ActionDispatch :: Http :: UploadedFile,以返回tempfile路径,而不是tempfile文件对象本身。
我这样做的原因是因为我有一个数据库记录器,通过在上下文中调用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约定。
答案 0 :(得分:1)
将代码移至config/initializers/your_filename.rb
文件。这些文件中的代码在Rails应用程序启动过程中加载。
总的来说。但是我不确定你为什么要修补ActionDispatch::Http::UploadedFile
课程,因为我没有太多关于你的应用的信息。
答案 1 :(得分:0)
试
config.autoload_paths += ["#{config.root}/lib"]