2013-11-30 3 views
2

Недавно я создал среду Rails dev на новой машине. Теперь я пытаюсь запустить набор тестов приложения, но продолжаю получать ошибки базы данных.Как отладить ошибку «база данных не существует» в наборе тестов?

Failure/Error: user = FactoryGirl.create(:user) 
PG::ConnectionBad: 
FATAL: database "test-db" does not exist 

Файл базы данных database.yml настроен правильно. Я запустил psql -l, и test-db действительно существует, и это подтверждается запуском rake db:create, где я получаю сообщение «уже существует».

Я запустил rake db:migrate и rake:test:prepare, но ошибка все еще остается.

Мой тест настроить следующим образом

group :test do 
    gem 'rspec-rails' 
    gem 'factory_girl_rails' 
    gem 'capybara' 
    gem 'guard-rspec' 
    gem 'spork-rails' 
    gem 'guard-spork' 
end 

Я не имею никаких проблем с базой развития.

Почему я получаю db, не существует ошибки, и что я могу сделать, чтобы отладить это?

+0

попытайтесь войти в консоль, используя тест ENV 'RAILS_ENV = test rails c'. ты можешь сделать это? Можете ли вы создать записи там? Еще одна деталь: вы перезапустите guard/spork после того, как был создан тестовый db? – gotva

+0

спасибо gotva. Я могу получить доступ к консоли с помощью 'RAILS_ENV = test rails c', однако я не могу создать записи в тестовой базе данных. Используя консоль разработки/базу данных, я могу создавать записи без проблем. Кстати, я только что удалил локальные базы данных и пересоздал их и перепрограммировал. Я не понимаю, почему два dbs (dev и test) ведут себя по-другому. Цените больше идей и с удовольствием предоставите больше информации –

ответ

2

После многих проб и ошибок, я, наконец, удалось получить работу тест базы данных. Оставляя следующее здесь, если кто-то еще сталкивается с этой проблемой.

Проблема была либо неправильным именем пользователя в database.yml (Хотя я и изменил эти значения, я не думаю, что это было причиной, так как и разработка, и тестирование использовали одно и то же имя пользователя ранее).

Или небольшая ошибка правописания в конфигурации var, настроенной в другом месте ENV["DATABASE_URL"] = "postgres://localhost/test_db". Это должно было быть test-db.

+0

В моей системе есть ошибка, которая оставила старый файл schema.rb. Переименование, что позволило мне создать и перенести db. – JosephK

4

Попробуйте запустить первый:

rake db:create 
+1

благодаря gegil, как я сказал выше, 'rake db: create' дает сообщение« test-db уже существует ». –

1

Я добавлю решение, которое помогло мне (если кто-то столкнется с этим). Я должен был бежать:

bundle exec rake db:setup

Это повторно создает базу данных и запускает любые миграции.

Смежные вопросы