Rspec: PG::ConnectionBad: PQsocket() не может получить дескриптор сокета
Я запускаю rspec, и большинство тестов провалились. Я получил ту же ошибку для них:
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::StatementInvalid:
PG::ConnectionBad: PQsocket() can't get socket descriptor: BEGIN
Я нашел вопрос, который похож на мою проблему, но ответа пока нет, и я также попробовал решение по этой ссылке, но для меня это не имело никакого значения. Я открыл тестовую консоль и выполнил несколько простейших запросов, и это сработало.
5 ответов
Там может быть проблема с pg: '0.18.1'
, Я пытался вернуться к 0.18.0
и я верю, что проблема ушла.
Я открою вопрос о репо после тестирования немного более локально. Я добавил эту проблему в репозиторий pg.
РЕДАКТИРОВАТЬ: я был неправ. Что на самом деле помогло, так это установка гема spring-commands-rspec. Я думаю, что это закончилось для меня кэшированием в состоянии, в котором оно работало. Хотя он также может легко кэшировать его в состоянии, в котором он этого не сделал.
Я установил 'pg', '0.20.0'
, понизив до 0.19.0, это сработало для меня.
Может не иметь никакого отношения к rspec, но выбрасывать это на всякий случай. Я боролся с этим неделями, и для меня это был способ, которым пассажир порождает новые процессы. Я просто должен был добавить это
# Rails -- prepared statements incompatible with faster spawn methods.
PassengerSpawnMethod conservative
к \etc\apache2\mods-available\passenger.conf
https://www.phusionpassenger.com/library/indepth/ruby/spawn_methods/
Я не знаю, связаны ли проблемы - но я обнаружил, что при использовании локального файла сокета unix вместо localhost проблема, казалось, исчезла для связанного вопроса; возможно, это может помочь вам тоже?
"Rake spec" не прошел большинство тестов, но "rails s" отлично работает на источнике диаспоры
Я получаю ту же ошибку, и некоторые другие ошибки, такие как PG::UnableToSend: socket not open
, Казалось, ошибка в случайное время. Я проследил это, и это было на самом деле из-за неправильной модели belongs_to
ассоциация. Это может не относиться к вам, но, надеюсь, это поможет кому-то.
Я имел:
belongs_to :user, class_name: User
Когда это должно было быть:
belongs_to :user, class_name: 'User'
Каким-то образом эта линия разорвала все мои соединения с PG-сокетами.