ruby - rails3.1 自动加载失败

标签 ruby ruby-on-rails-3.1

我正在尝试将一个模块添加到我的 Rails 3.1 应用程序中,我以前可以这样做,但它现在无法使用我添加的最新模块。非常感谢任何想法

在应用程序中

    # 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' 放在 vote.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)

最佳答案

您遇到这个问题是因为 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(只有自动加载配置了那个)

关于ruby - rails3.1 自动加载失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546746/

相关文章:

jquery - 如何以嵌套形式使用 jQuery FIle Upload?

ruby - Anagrams Code Kata,Ruby 解决方案非常慢

ruby-on-rails - 如何编写使用 args 运行多个任务的任务?

ruby-on-rails - RunTimeError:Rspec 2.10.1 中的 ActionController::RackDelegation for rails 3.1.4 应用程序 Controller

ruby-on-rails - 基于 Rails 的 S3 文件管理器

ruby-on-rails - Rails 3.1 + 设计 1.4.9 : Why Doesn't ActiveRecord Catch A Failed Save?

ruby-on-rails-3.1 - 使用 Jasmine 监视 Javascript 构造函数

python - 哪种脚本语言在 perl vs python vs ruby​​ 中表现更好?

ruby - 无法激活 aws-sdk-v1-1.67.0,因为 json-2.1.0 与 json (~> 1.4) 冲突 (Gem::ConflictError)

python - 有没有可能为动态语言创建编译器而不失去他的动态特性?