2013-04-28 45 views
0

我正在使用ruby 1.9.3-p392上的Rails 3应用程序(特别是3.2.13)。rails自动载入不采摘猴子修补类

在我的控制器中的一个“创建”动作可以接收图像(作为ActionDispatch :: HTTP :: UploadedFile的)

我试图通过覆盖其as_json到猴补丁ActionDispatch :: HTTP :: UploadedFile的方法来返回临时文件路径,而不是临时文件File对象本身。

我这样做的原因是因为我有一个数据库记录器,通过在上下文中调用to_json来序列化日志上下文(其中包括请求参数)。 问题在于,在所述类上调用to_json会产生大量填充我的日志的二进制数据。

所以我创建了以下目录结构下的“LIB”: “action_dispatch/HTTP/uploaded_file.rb” 在这个文件中的类名为ActionDispatch::Http::UploadedFile

我还添加了lib文件夹应用.rb通过: config.autoload_paths += Dir["#{config.root}/lib"]

问题是,轨道不加载我的猴子补丁类。 如果我将require "action_dispatch/http/uploaded_file"添加到我的控制器文件的顶部,一切正常。

为什么Rails自动加载我的猴子补丁类? 目录结构和类命名是根据Rails约定。

回答

1

将您的代码移动到config/initializers/your_filename.rb文件。这些文件中的代码在Rails应用程序启动过程中加载。

这是一般的。但我不知道为什么你想要猴子补丁类,因为我没有得到关于你的应用程序的很多信息。

0

尝试

config.autoload_paths += ["#{config.root}/lib"]