【问题标题】:rails g gives uninitialized constant Rack::Mongoidrails g 给出未初始化的常量 Rack::Mongoid
【发布时间】:2011-08-02 19:23:41
【问题描述】:

运行“rails g”时出现此错误(我的应用程序似乎运行良好 否则,但我需要使用生成器):

      /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:113:in `constantize': uninitialized constant Rack::Mongoid (NameError)
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:112:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:112:in `constantize'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:14:in `klass'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:33:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:209:in `inject'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `inject'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:162:in `build_middleware_stack'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application/finisher.rb:35
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `instance_exec'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `run'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:50:in `run_initializers'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `run_initializers'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:134:in `initialize!'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `send'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
           from /home/love/mongodb.roger/config/environment.rb:7
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:103:in `require_environment!'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/commands.rb:16
           from script/rails:6:in `require'
           from script/rails:6

我使用的是 1.8.7(但是当我将 1.9.x 与 RVM 一起使用时,我也会收到此错误)。

ruby -v 
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] 

rails -v 
Rails 3.0.9 

cat Gemfile 
source 'http://rubygems.org' 
gem 'rails', '3.0.9' 
gem "mongoid", "~> 2.1.0" 
gem "bson_ext", "~> 1.3" 
gem "devise" #, :git=>"https://github.com/plataformatec/devise.git" 
gem "rails-footnotes", ">= 3.7", :group => :development 
gem "compass" 
gem 'SystemTimer' 
gem "oa-oauth", :require => "omniauth/oauth" 
gem "warden" 
gem 'formtastic', '~> 1.1.0' 
gem 'paperclip' 
gem 'jquery-rails' 
gem 'acts-as-taggable-on' 
gem "gmaps4rails" 
gem 'browser' 
gem 'apotomo', "~>1.1.0" 
gem 'sass' 
gem 'chunky_png' 
gem 'mongoid-paperclip' 

有人知道吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 mongoid rack


    【解决方案1】:

    从您的 config/application.rb 文件中删除该行:

    require "mongoid/railtie"
    

    【讨论】:

      【解决方案2】:

      我在使用 Mongoid 时从 Rails 3.0.7 迁移到 Rails 3.1.3 时看到了这个问题。要解决此问题,请在 config/application.rb 中找到您的所有 mongoid 所需的位置 - 例如 - 在 config/application.rb

      require 'mongoid/railtie'
      require 'action_controller/railtie'
      require 'action_mailer/railtie'
      require 'active_resource/railtie'
      require 'rails/test_unit/railtie'
      

      ...然后在此之前添加 require 'rack/mongoid' 给您...

      require 'rack/mongoid' # TADA!
      require 'mongoid/railtie'
      require 'action_controller/railtie'
      require 'action_mailer/railtie'
      require 'active_resource/railtie'
      require 'rails/test_unit/railtie'
      

      这让 Rails 控制台也为我工作(rails c)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多