Active Record错误以创建数据库

时间:2015-04-24 20:29:47

标签: ruby-on-rails ruby activerecord rspec rspec-rails

在我的 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'),它可行,但这是一个很好的实践?

1 个答案:

答案 0 :(得分:3)

数据库不存在,以避免您可以运行的错误:

rake db:create

或者你可以运行:

rake db:setup

这将创建数据库并运行迁移文件。