2011-09-25 78 views
2

我想添加一个模块到我的Rails 3.1应用程序,我已经能够做到这一点,但它现在无法使用我添加的最新模块。任何想法在LIB不胜感激rails3.1自动加载失败

在application.rb中

 
    # Custom directories with classes and modules you want to be autoloadable. 
    config.autoload_paths += %W(#{Rails.root}/app/workers 
           #{Rails.root}/lib/validators 
           #{Rails.root}/lib/content_items 
           #{Rails.root}/lib/booher_modules 
          ) 

/booher_modules/mongoid_counter_cache.rb

 
module Mongoid 
    module CounterCache 
    extend ActiveSupport::Concern 

    module ClassMethods 
     def counter_cache(options) 
     ... some stuff ... 

现在vote.rb:

 
class Vote 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    include Mongoid::CounterCache 

每当我试着启动应用程序,我得到未初始化的常量错误:

 
Users/Tim/Sites/polco/app/models/vote.rb:4:in `': uninitialized constant Mongoid::CounterCache (NameError) 
    from /Users/Tim/Sites/polco/app/models/vote.rb:1:in `' 
    from /Users/Tim/.rvm/gems/[email protected]/bundler/gems/mongoid-ccae125ccfd8/lib/rails/mongoid.rb:66:in `load_model' 
     ... so on 

我试图把需要vote.rb '的lib/mongoid_counter_cache.rb',但我得到:

 
rails c 
/Users/Tim/.rvm/gems/[email protected]/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:306:in `rescue in depend_on': No such file to load -- lib/mongoid_counter_cache (LoadError) 
+1

我现在有同样的问题,你是否修复它? – jlstr

回答

2

你由于Rails试图包括“Mongoid有这个问题:: CounterCache”。

要做到这一点,它正在自动加载路径中的某处寻找文件“mongoid/counter_cache.rb”。

所以......

... 
lib/booher_modules/mongoid/counter_cache.rb 
... 

因此修复...

mkdir -p lib/booher_modules/mongoid 
mv lib/booher_modules/mongoid_counter_cache.rb lib/booher_modules/mongoid/counter_cache.rb 

的原因,你的具体的 “需要 '的lib/mongoid_counter_cache.rb'” 不工作是因为没有按看看自动加载路径,它看起来在主要包含路径($ :),其中不包括lib/booher_modules(只有自动加载配置)