在我的 spec / rails_helper.rb 中,我有以下代码来创建测试数据库,如果它没有退出。
def database_exists?
ActiveRecord::Base.connection rescue ActiveRecord::NoDatabaseError ? false : true
end
unless database_exists?
ActiveRecord::Base.establish_connection(:"#{ENV['RAILS_ENV']}")
db_config = ActiveRecord::Base.configurations[ENV['RAILS_ENV']]
ActiveRecord::Base.connection.create_database db_config
end
但是在调用 rspec 时出现此错误:
.rbenv / versions / 2.2.1 / lib / ruby / gems / 2.2.0 / gems / activerecord-4.2.1 / lib / active_record / connection_adapters / mysql2_adapter.rb:23:in,sys救援in mysql2_connection' :未知数据库' my-db-test' (ActiveRecord的:: NoDatabaseError)
问题出在哪里?
如果我使用系统(' rake db:create'),它可行,但这是一个很好的实践?
答案 0 :(得分:3)
数据库不存在,以避免您可以运行的错误:
rake db:create
或者你可以运行:
rake db:setup
这将创建数据库并运行迁移文件。