2015-02-21 3 views
0

Во время работы Rails 4.2, Ruby 2.2.0 и Rspec 3,2, я получаю эту ошибку, когда я бегу Rspec:RSpec "Миграции В ожидании" на Heroku

rake aborted! 
PG::ConnectionBad: FATAL: permission denied for database "postgres" 
DETAIL: User does not have CONNECT privilege. 
-e:1:in `<main>' 
Tasks: TOP => db:test:load => db:test:purge 
(See full trace by running task with --trace) 
/Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:393:in `check_pending!': (ActiveRecord::PendingMigrationError) 

Migrations are pending. To resolve this issue, run: 

    bin/rake db:migrate RAILS_ENV=test 

    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:406:in `load_schema_if_pending!' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:412:in `block in maintain_test_schema!' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:640:in `suppress_messages' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:417:in `method_missing' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:412:in `maintain_test_schema!' 
    from /Users/ahanmalhotra/Dropbox/Vocabulist/vocabulist/spec/rails_helper.rb:18:in `<top (required)>' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1181:in `require' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1181:in `block in requires=' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1181:in `each' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1181:in `requires=' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration_options.rb:110:in `block in process_options_into' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration_options.rb:109:in `each' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration_options.rb:109:in `process_options_into' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration_options.rb:22:in `configure' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:96:in `setup' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:85:in `run' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:70:in `run' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:38:in `invoke' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.0/exe/rspec:4:in `<top (required)>' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/gemsets/vocabulist/bin/rspec:23:in `load' 
    from /Users/ahanmalhotra/.rbenv/versions/2.2.0/gemsets/vocabulist/bin/rspec:23:in `<main>' 

Моя тестовая база данных находится на Heroku, и я что RSpec пытается сбросить тестовую базу данных и воссоздать ее. Это не разрешено на Heroku, поэтому вот почему возникает ошибка permission denied. Эта ошибка не возникает, если вы предоставляете новую базу данных и запускаете RSpec в первый раз; после первого появления ошибки. Любые идеи по исправлению?

Спасибо!

+0

Это не в производстве. Это на моей локальной машине и на моем сервере Bamboo. Оба они указывают на тот же тест db на Heroku. –

+0

, как вы заявили, Heroku не позволяет вам отбрасывать БД, поэтому это не хорошая платформа для размещения вашей базы данных разработки. – Anthony

ответ

0

Нет никаких оснований для использования Heroku db для тестирования, поскольку тестовая база данных воссоздается каждый раз, прежде чем начнется тест. Вместо этого вы должны использовать локальную машину для тестов runinig или если тестовый костюм слишком велик, а ваша машина-разработчик работает медленно, используйте сервисы CI, такие как Travis, Semaphore, Circle CI, Snap CI, Codeship и т. Д.

+0

Спасибо за ответ! Итак, для Atlassian Bamboo мне нужно просто использовать локальную базу данных Postgres? Эта настройка работала нормально, но затем, когда я обновил Rails и RSpec, она сломалась. –

+0

Посмотрите, когда вы работаете над своим кодом на локальном компьютере, вы используете 2 базы данных локально: разработка и тестирование. Когда вы думаете, что пришло время подтолкнуть ваше приложение к производству, вы нажимаете приложение на Heroku, запускаете миграцию на Heroku и загружаете семена, если это необходимо. Поэтому ваше приложение на Heroku будет использовать базу данных, размещенную на Heroku. Нет никакой корреляции между стеками Heroku и вашей местной средой. Мне что-то не хватает? Может быть, что-то не так с вашей настройкой? Вы можете поделиться дополнительной информацией, и я попробую помочь. – atomdev

+0

У меня есть postgres db на heroku, называемый blah_test. На моей машине dev и моем экземпляре Atlasian Bamboo CI я запускал rspec с базой данных blah_test. Какую базу данных я должен использовать для Atlassian Bamboo? Должен ли я использовать локальный для каждой машины? –

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