2011-04-30 87 views
3

我使用config.autoload_paths的方式非常類似於這個related question從Rails 3項目中的lib目錄加載類。從lib文件夾中加載文件的最佳方法是在Rails 3中爲〜existing〜類添加方法?

具體來說,我已經添加了這些行到config/application.rb中的文件:

config.autoload_paths += %W(#{config.root}/lib) 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 

但是,這種方法是不工作對我來說現有類。當我添加一個文件一樣的lib /擴展/ string.rb:

class String 
    def foo 
    puts "foo" 
    end 
end 

我得到一個undefined method 'foo' for "":String錯誤。通過各種搜索,我發現這個問題與這些文件的延遲加載有關。我嘗試使用config.eager_load_paths,但無法讓它工作。

回答

1

我做正是你所描述的在我的應用程序是什麼,唯一的區別是,我也呼籲extensions.rb中的初始化用下面的代碼:

Dir.glob('lib/extensions/*').each { |f| require f } 
+1

這初始化方法適用於我。但是,我不得不稍微改變它爲:'Dir.glob(「#{Rails.root}/lib/extensions/*」)。要求f}'你同意嗎? – Rick 2011-04-30 23:20:06

+0

此外,還有一個很好的自動加載示例和需要在[博客文章]中引用另一個問題的示例(http://ablogaboutcode.com/2011/01/17/ruby-autoloading-explained/) – Rick 2011-04-30 23:24:57

+0

使用完整路徑可能會更好,但我的應用程序不需要它。不知道爲什麼會這樣。 – 2011-05-01 01:38:25

相關問題