将 mongoid 4.0.1 升级到 5.1.0 后出错
Error after upgrading mongoid 4.0.1 to 5.1.0
我升级了 Mongoid,当我 运行 我的服务器时,我收到以下错误。事实上,当我 运行 任何类似控制台的东西时,我都会得到同样的错误:
/Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:49:in `<class:Railtie>': uninitialized constant Mongoid::Config (NameError)
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:12:in `<module:Mongoid>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:7:in `<module:Rails>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:6:in `<top (required)>'
from /Users/SupremeA/rails-dev-box/code/True_Numbers/config/application.rb:5:in `require'
from /Users/SupremeA/rails-dev-box/code/True_Numbers/config/application.rb:5:in `<top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:43:in `require'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:43:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
这似乎是 Railties 的问题,但我似乎看不出如何解决它。
application.rb
require File.expand_path('../boot', __FILE__)
require "action_controller/railtie"
require "action_mailer/railtie"
require "mongoid/railtie"
#require "active_resource/railtie" # Comment this line for Rails 4.0+
require "rails/test_unit/railtie"
require "sprockets/railtie" # Uncomment this line for Rails 3.1+
#require 'rails/all'
#config.filter_parameters += [:password, :password_confirmation]
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module AppName
class Application < Rails::Application
Mongoid.logger.level = Logger::DEBUG
Moped.logger.level = Logger::DEBUG
#load vendor files
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
# config.i18n.default_locale = :de
end
end
--更新--
从 application.rb
中删除 railties 行后出现新错误
.../AppName/config/application.rb:19:in `<class:Application>': uninitialized constant AppName::Application::Moped (NameError)
from /Users/SupremeA/rails-dev-box/code/AppName/config/application.rb:17:in `<module:AppName>'
from /Users/SupremeA/rails-dev-box/code/AppName/config/application.rb:16:in `<top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:74:in `require'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:74:in `block in <top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:71:in `tap'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:71:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
我认为您的 application.rb
:
中不需要这一行
require "mongoid/railtie"
只需删除它,它就会起作用。
同时删除这一行:
Moped.logger.level = Logger::DEBUG
根据 mongoid 文档,如果您想编辑记录器配置,请使用:
Mongoid.logger.level = Logger::DEBUG
Mongo::Logger.logger.level = Logger::DEBUG
我升级了 Mongoid,当我 运行 我的服务器时,我收到以下错误。事实上,当我 运行 任何类似控制台的东西时,我都会得到同样的错误:
/Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:49:in `<class:Railtie>': uninitialized constant Mongoid::Config (NameError)
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:12:in `<module:Mongoid>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:7:in `<module:Rails>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/mongoid-5.1.1/lib/mongoid/railtie.rb:6:in `<top (required)>'
from /Users/SupremeA/rails-dev-box/code/True_Numbers/config/application.rb:5:in `require'
from /Users/SupremeA/rails-dev-box/code/True_Numbers/config/application.rb:5:in `<top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:43:in `require'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:43:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
这似乎是 Railties 的问题,但我似乎看不出如何解决它。
application.rb
require File.expand_path('../boot', __FILE__)
require "action_controller/railtie"
require "action_mailer/railtie"
require "mongoid/railtie"
#require "active_resource/railtie" # Comment this line for Rails 4.0+
require "rails/test_unit/railtie"
require "sprockets/railtie" # Uncomment this line for Rails 3.1+
#require 'rails/all'
#config.filter_parameters += [:password, :password_confirmation]
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module AppName
class Application < Rails::Application
Mongoid.logger.level = Logger::DEBUG
Moped.logger.level = Logger::DEBUG
#load vendor files
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
# config.i18n.default_locale = :de
end
end
--更新--
从 application.rb
中删除 railties 行后出现新错误.../AppName/config/application.rb:19:in `<class:Application>': uninitialized constant AppName::Application::Moped (NameError)
from /Users/SupremeA/rails-dev-box/code/AppName/config/application.rb:17:in `<module:AppName>'
from /Users/SupremeA/rails-dev-box/code/AppName/config/application.rb:16:in `<top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:74:in `require'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:74:in `block in <top (required)>'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:71:in `tap'
from /Users/SupremeA/.rvm/gems/ruby-2.2.1/gems/railties-4.0.10/lib/rails/commands.rb:71:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
我认为您的 application.rb
:
require "mongoid/railtie"
只需删除它,它就会起作用。
同时删除这一行:
Moped.logger.level = Logger::DEBUG
根据 mongoid 文档,如果您想编辑记录器配置,请使用:
Mongoid.logger.level = Logger::DEBUG
Mongo::Logger.logger.level = Logger::DEBUG