在迁移完成之前,Sinatra模型会被加载

时间:2015-03-20 15:59:33

标签: ruby postgresql sinatra sequel

我的黄瓜测试有一个env.rb从头开始构建一个db,让测试失败,导致在运行测试时不存在的关系。

这是我的env.rb,没有不必要的代码。

require 'pg'
require 'sequel'
DBNAME = 'dbname'
ADMIN_DB = Sequel.connect 'postgres://postgres:@localhost/postgres'

query = ADMIN_DB['SELECT * FROM pg_database WHERE datname = ?', DBNAME]
ADMIN_DB['CREATE DATABASE ?', Sequel.lit(DBNAME)].all if query.count == 0

ENV['DATABASE_TEST'] = "postgres://postgres:@localhost/#{DBNAME}"
DATABASE_TEST = Sequel.connect ENV['DATABASE_TEST']

require_relative '../../app'    

Sequel.extension :migration
Sequel::Migrator.run(DATABASE_TEST, 'db/migrations')

我的模特:

class User < Sequel::Model

end

然后我在我的测试中使用User.new。 当我运行它时,数据库和表都被创建,但控制台在运行cukes时仍然给我这个:

  PG::UndefinedTable: ERROR:  relation "users" does not exist

我在env中尝试过各种代码重新排列,以确保在我的模型加载之前完成迁移。

0 个答案:

没有答案