2014-02-25 146 views
2

我需要Ruby模塊FileUtils來處理一些文件操作。在Rails控制檯和控制器中需要Ruby模塊

我想測試這個要求將在我的控制器中正常工作。所以,我想這在我的控制檯,但得到了false結果(當我不是在Rails控制檯,但能正常工作只是一個普通的Ruby控制檯):

  1. 轉到我的項目的根目錄
  2. $ rails c打開我的控制檯
  3. > require 'fileutils'返回false

通過導軌控制檯需要模塊的正確方法是什麼?爲什麼這會返回錯誤?

我假設在我的控制器中我可以做這樣的事情,對嗎?

def create 
    require 'fileutils' 
    # my code that uses fileutils. 
end 

回答

6

requirefalse響應裝置,該模塊已經被加載。你應該很好地在你的控制器中不需要這個。請參閱文檔:http://www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-require

+0

感謝steakchaser - 你知道在* Rails的要求的其他模塊上的最佳實踐文檔*的?我一直在使用谷歌搜索,但只能罰款Ruby文檔。 –

+0

這是一個很好的問題。如果你想要所有的東西都可以訪問模塊類的方法,我可能會使用一個初始化器。不太廣泛,你可以在各種基類(即ApplicationController)中使用。或者,它也可能被要求作爲一個服務/關注的一個對另一個lib非常需要的服務(這通常是最終發生在我身上的事情)。 – steakchaser

2

require返回false表示它已經加載。

從控制檯試試這個:

FileUtils.pwd 
# => "/present/working/directory 
5

這是最有可能已經要求在默認情況下。只需在控制檯輸入FileUtils,就應該回應

# => FileUtils