2013-04-28 47 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"]