rails3.1 ошибка автозагрузки - PullRequest
       0

rails3.1 ошибка автозагрузки

2 голосов
/ 25 сентября 2011

Я пытаюсь добавить модуль в свое приложение на Rails 3.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
                              )

в lib / booher_modules / mongoid_counter_cache.rb

module Mongoid
  module CounterCache
    extend ActiveSupport::Concern

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

Теперь голосования. 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/ruby-1.9.2-p290@cba/bundler/gems/mongoid-ccae125ccfd8/lib/rails/mongoid.rb:66:in `load_model'
        ... so on

Я пытался добавить require 'lib / mongoid_counter_cache.rb' в voice.rb, но получаю:

rails c
/Users/Tim/.rvm/gems/ruby-1.9.2-p290@cba/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 Ответ

2 голосов
/ 26 декабря 2011

Эта проблема возникает из-за того, что 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

Причина, по которой ваше конкретное «require 'lib / mongoid_counter_cache.rb'» не работает, заключается в том, что он не смотрит в путь автозагрузки, а в основном пути включения ($ :), который не включает lib / booher_modules (с этим настроен только автозагрузка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...