【问题标题】:"uninitialized constant MongoMapper::Base" error when doing rake mongo:mongrate执行 rake mongo:mongrate 时出现“未初始化的常量 MongoMapper::Base”错误
【发布时间】:2011-01-31 05:17:25
【问题描述】:

我在尝试“rake mongo:mongrate”时遇到以下错误:

$ rake mongo:mongrate --trace
(in /home/mei/Jobfully)
** Invoke mongo:mongrate (first_time)
** Invoke environment (first_time)
** Execute environment

** Execute mongo:mongrate
==  AddPricingPlans: migrating ================================================
-- add_column(:users, :plan_id, :string)
rake aborted!
uninitialized constant MongoMapper::Base
/home/mei/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:440:in `rescue in load_missing_constant'

我的 Gemfile 中有以下内容 -

gem 'rake', '~>0.8'
gem 'mongo',        '= 1.0.7'  # must be same version as bson/bson_ext
gem 'bson',         '= 1.0.4'  # must be same version as bson_ext/mongo
gem 'bson_ext',     '= 1.0.4'  # must be same version as bson/mongo
gem 'mongo_mapper', '~> 0.8.2'

我还在 Rakefile 中添加了以下行 -

import 'vendor/plugins/mongrations/lib/tasks/mongo.rake'

关于如何解决此问题的任何想法?谢谢。

【问题讨论】:

    标签: ruby-on-rails mongodb rubygems mongomapper


    【解决方案1】:

    MongoMapper::Base 在去年的某个时候被弃用(它甚至不再存在!)。您现在希望 MongoMapper.connectionlib/mongo_mapper/mongrations.rbdef connection 而不是 MongoMapper::Base.connection

    我不确定它是什么时候坏的,但做出这种改变对我来说是固定的。

    如果你想对其进行猴子补丁,你可以使用:

    module MongoMapper
      class Base
        def self.connection
          MongoMapper.connection
        end
      end
    end
    

    【讨论】:

    • 谢谢,克里斯。我明白你在说什么。我还注意到“vendor/plugins/mongrations/lib/mongo_mapper/migrator.rb”文件的“def proper_table_name”中有“MongoMapper::Base.table_name_prefix”和“MongoMapper::Base.table_name_suffix}”。如何修复这些对 MongoMapper::Base 的引用?感谢您的帮助!
    • 如果您再等几分钟,我会修复它们并将其作为带有测试的 gem 发布。您应该可以安装 gem 就可以了。
    • @mei: gem install mongrations,然后通过 config.gem 或 Gemfile 包含它。请参阅 github.com/cheald/mongrations 以获取完整的自述文件。
    • 嗨,克里斯,我从 github.com/cheald/mongrations 下载了 gem install mongrations 并添加到了我的 Gemfile gem 'mongrations' 现在我得到 $ rake mongo::mongrate --trace (在 /home/mei/Jobfully 中)rake 中止了!不知道如何构建任务 'mongo::mongrate' 我错过了什么吗?
    • 我似乎找不到 'vendor/plugins/mongrations/lib/tasks/mongo.rake'
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多