我在Rails 4.2.6中有一个web应用程序,最初使用MongoDB (通过Mongoid5)作为其主数据库。但是,现在我需要连接到一个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: falsedatabase.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数据库,但是我首先想知道是否可以配置ActiveRecord而不是连接到一个测试数据库,并且只使用mongo_test。
能做我想做的事吗?有人知道怎么做吗?
发布于 2016-06-02 10:34:58
我决定回答我自己的问题,因为所提供的答案不符合我的需要。
经过多次试验和错误之后,我能够避免在测试环境中连接到MySQL数据库,以适应这个问句中给出的信息。
我唯一需要做的就是将下面的gem添加到我的Gemfile中
group :test do
gem 'activerecord-nulldb-adapter'
end此gem在项目中安装NullDB数据库适配器,使ActiveRecord能够在不需要定义真实数据库的情况下建立连接。
最后但同样重要的是,我更新了config/database.yml,在使用新适配器的测试环境中添加了数据库连接的参数:
test:
adapter: nulldb
encoding: utf8
reconnect: false
database: mysql_test
pool: 5
username: user
password: pass
socket: /var/run/mysqld/mysqld.sock发布于 2016-06-01 09:39:55
这里有两个解决办法
也可以:为您的测试env.添加sqlite数据库
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000或:将您的自动加载程序从application.rb 移动到特定于环境的信任,并将 activerecord 宝石移动到 Gemfile**.**上的 development env
Gemfile
group :development do
gem 'activerecord'
endconfig/application.rb:
config/environments/test.rb和config/environments/development.rb (请记住要从test env中排除哪些模型,即activerecord mo )。
config.autoload_paths +=什么的删除require 'rails/all'行,并要求在每个环境文件中专门使用框架。
https://stackoverflow.com/questions/37564339
复制相似问题