gpt4 book ai didi

ruby-on-rails - 我的 Rails 4.2.6 应用程序使用两个数据库。我可以只使用一个进行测试吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:00 25 4
gpt4 key购买 nike

我在 Rails 4.2.6 中有一个 Web 应用程序,它最初使用 MongoDB(通过 Mongoid 5)作为其主要数据库。但是,现在我需要连接到 MySQL 数据库,以便仅为我的应用程序读取一些额外的数据。

到目前为止,我已经在我的项目中使用了ActiveRecord,并且能够在开发环境中与上述数据库建立连接。我对这件事的配置文件是:

mongoid.yml

development:
clients:
default:
database: mongo_development
hosts:
- localhost:27017
options:
test:
clients:
default:
database: mongo_test
hosts:
- localhost:27017
options:
read:
mode: :primary
max_pool_size: 1
options:
raise_not_found_error: false

数据库.yml

development:
adapter: mysql2
encoding: utf8
reconnect: false
database: mysql_development
pool: 5
username: user
password: pass
socket: /var/run/mysqld/mysqld.sock

当我运行我的测试套件时,问题出现了。我正在使用 RSpec 并执行 bundle exec rspec spec 产生以下错误消息:

 /home/user/.rvm/gems/ruby-2.1.6@global/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:248:in `resolve_symbol_connection': 'test' database is not configured. Available: ["development"] (ActiveRecord::AdapterNotSpecified)

ActiveRecord 提示没有要连接的测试数据库,但问题是我没有用于测试目的的 MySQL 数据库:我编写的规范仅与 Mongoid 模型交互。

我正在考虑创建一个空的 MySQL 数据库作为 hack,但我首先想知道我是否可以将 ActiveRecord 配置为不连接到测试数据库并仅使用 mongo_test

是否可以做我想做的事?有人知道怎么做这个吗?

最佳答案

这里有两个解决方法

或者:为您的测试环境添加一个 sqlite 数据库。

test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

或者:将您的自动加载从 application.rb 移动到特定于环境的配置,并将 activerecord gem 移动到 development 环境你的 Gemfile

gem 文件

group :development do
gem 'activerecord'
end

config/application.rb:

  • 首先:将其移至 config/environments/test.rbconfig/environments/development.rb(记住要排除的模型来自 test 环境,即 activerecord mo

    config.autoload_paths += WHATEVER

删除 require 'rails/all' 行并在每个环境文件中也需要您想要专门使用的框架。

关于ruby-on-rails - 我的 Rails 4.2.6 应用程序使用两个数据库。我可以只使用一个进行测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37564339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com