Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';不要让mongoid使用Rails 4_Ruby On Rails_Mongodb_Mongoid_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Can';不要让mongoid使用Rails 4

Ruby on rails Can';不要让mongoid使用Rails 4,ruby-on-rails,mongodb,mongoid,ruby-on-rails-4,Ruby On Rails,Mongodb,Mongoid,Ruby On Rails 4,我已经在我的Gemfile中注释掉了sqlite3以及以下几行: gem 'mongoid', '~> 4', github: 'mongoid/mongoid' gem 'bson_ext' 然而,我一直收到 为数据库适配器指定了'sqlite3',但未加载gem。将gem“sqlite3”添加到您的gem文件。 原因似乎是database.yml仍然将sqlite列为数据库。我应该如何让Rails使用生成的mongoid.yml?用mongoid.yml替换database.yml的

我已经在我的Gemfile中注释掉了sqlite3以及以下几行:

gem 'mongoid', '~> 4', github: 'mongoid/mongoid'
gem 'bson_ext'
然而,我一直收到
为数据库适配器指定了'sqlite3',但未加载gem。将gem“sqlite3”添加到您的gem文件。

原因似乎是database.yml仍然将sqlite列为数据库。我应该如何让Rails使用生成的mongoid.yml?用mongoid.yml替换database.yml的内容似乎不起作用-我得到了

ActiveRecord::AdapterNotSpecified:数据库配置未指定适配器
错误

它是否与Rails 4不兼容,或者我遗漏了一些简单的东西

编辑:我想我越来越暖和了。我已将适配器添加为“mongoid”。以下是my database.yml的内容:

development:
  adapter: 'mongoid'
  # Configure available database sessions. (required)
  sessions:
    # Defines the default session. (required)
    default:
      # Defines the name of the default database that Mongoid can connect to.
      # (required).
      database: xboxie
      # Provides the hosts the default session can connect to. Must be an array
      # of host:port pairs. (required)
      hosts:
        - localhost:27017
      options:
        # Change whether the session persists in safe mode by default.
        # (default: false)
        # safe: false

        # Change the default consistency model to :eventual or :strong.
        # :eventual will send reads to secondaries, :strong sends everything
        # to master. (default: :eventual)
        # consistency: :eventual

        # How many times Moped should attempt to retry an operation after
        # failure. (default: 30)
        # max_retries: 30

        # The time in seconds that Moped should wait before retrying an
        # operation on failure. (default: 1)
        # retry_interval: 1
  # Configure Mongoid specific options. (optional)
  options:
    #
test:
  sessions:
    default:
      database: xboxie_test
      hosts:
        - localhost:27017
      options:
        consistency: :strong
        # In the test environment we lower the retries and retry interval to
        # low amounts for fast failures.
        max_retries: 1
        retry_interval: 0


# # SQLite version 3.x
# #   gem install sqlite3
# #
# #   Ensure the SQLite 3 gem is defined in your Gemfile
# #   gem 'sqlite3'
# development:
#   adapter: sqlite3
#   database: db/development.sqlite3
#   pool: 5
#   timeout: 5000

# # Warning: The database defined as "test" will be erased and
# # re-generated from your development database when you run "rake".
# # Do not set this db to the same as development or production.
# test:
#   adapter: sqlite3
#   database: db/test.sqlite3
#   pool: 5
#   timeout: 5000

# production:
#   adapter: sqlite3
#   database: db/production.sqlite3
#   pool: 5
#   timeout: 5000
产生错误:


LoadError:无法加载“活动\u记录/连接\u适配器/mongoid\u适配器”。确保config/database.yml中的适配器有效。如果使用的适配器不是“mysql”、“mysql2”、“postgresql”或“sqlite3”,请将必要的适配器gem添加到gem文件。

检查您的
配置/database.yml
。您可能在那里指定了sqlite3

我通过添加以下内容解决了这个问题:

Mongoid.load!(Rails.root.join("/config/mongoid.yml"))
根据教程,转到
config/initializers/mongoid.rb

此外,您还需要更改config/application.rb文件中的以下行:

require 'rails/all'
到(在Rails 3.x中):

或者(在Rails 4.x中):


我也有类似的问题。通过在没有ActiveRecord的情况下重新创建我的应用程序解决了所有问题

rails new app_name --skip-active-record

如上所述添加Gems并正确使用我的mongoid.yml…

使用mongo时会出现此问题。基本上,mongo与活动记录不匹配。因此,使用命令生成应用程序

rails g myApp--跳过活动记录


在我的例子中效果很好

在我的例子中,我收到了来自彪马的类似错误。我意识到在config/puma.rb上我有:

on_worker_boot do
  # worker specific setup
  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] ||
        Rails.application.config.database_configuration[Rails.env]
    config['pool'] = ENV['MAX_THREADS'] || 16
    ActiveRecord::Base.establish_connection(config)
  end
end
我不得不用config/initializers/mongoid.rb的内容替换启动时的所有内容


总的来说,我认为调试它的一个好方法是在代码中搜索对活动记录的任何引用。

我也得到了与

"Could not load active_record/connection_adapters/mongoid_adapter".
我可以通过评论来解决它 devopment.rb中的“config.active\u record.migration\u error=:page\u load”和 application.rb中的“config.active\u record.raise\u in\u transactional\u callbacks=true”。还要确保在database.yml中,数据库不是在sqlite3中指定的,而是在mongoid中指定的。 您还需要从application.rb中删除“require'rails/all'”,并将其替换为

require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

如上所述。

是的,我有。但是,如果我将其更改为mongoid,我有一个完整的mongoid.yml配置文件和一个database.yml配置文件,我不知道如何交换这两个文件。在您链接的教程结束时,他们讨论了如何删除database.yml,不是吗?
"Could not load active_record/connection_adapters/mongoid_adapter".
require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"