Фантомная транзакция убивает ActiveRecord? Rails не может читать данные - PullRequest
0 голосов
/ 08 января 2019

Когда я запускаю консоль или запускаю проект в разработке, я получаю эту ошибку всякий раз, когда пытаюсь дотронуться до моей базы данных postgres, но файл, указанный в сообщении об ошибке, больше не существует в моем проекте. (... app.workflows / user_workflow). Я изменил имя файла и имя класса на intuit_user_workflow.rb и IntuitWorkflow соответственно

 bash -c "/Users/yus3/.rvm/bin/rvm ruby-2.5.0 do /Users/yus3/.rvm/rubies/ruby-2.5.0/bin/ruby /Users/yus3/.rvm/gems/ruby-2.5.0/gems/ruby-debug-ide-0.7.0.beta6/bin/rdebug-ide --key-value --disable-int-handler --evaluation-timeout 10 --evaluation-control --time-limit 100 --memory-limit 0 --rubymine-protocol-extensions --port 49430 --host 0.0.0.0 --dispatcher-port 49431 -- \"/Users/yus3/Documents/Mac 11.18/RubymineProjects/CostReportQB/bin/rails\" console"
Fast Debugger (ruby-debug-ide 0.7.0.beta6, debase 0.2.3.beta2, file filtering is supported) listens on 0.0.0.0:49430
Loading development environment (Rails 5.2.1)
2.5.0 :001 > >> p=Project.first
Traceback (most recent call last):
        1: from (irb):1
SyntaxError (/Users/yus3/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:257: syntax error, unexpected tSYMBEG, expecting keyword_end
...app/workflows/user_workflow.rb:19
...                              ^
/Users/yus3/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:273: dynamic constant assignment
        NULL_TRANSACTION = NullTransaction.new
                         ^
/Users/yus3/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:283: syntax error, unexpected end-of-input, expecting keyword_end)
2.5.0 :002 > 

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

Странно то, что единственный указанный файл, который не является частью какой-либо библиотеки ... app / workflows / user_work.rb: 19 больше не находится в моем проекте (хотя раньше). Я изменил имя файла и класса на IntuitUserWorkflow везде, где это происходит в моем проекте, что я подтвердил путем тщательного изучения моей базы кода. Тем не менее, я все еще получаю эту ошибку на основе несуществующего файла. Другая проблема, на которую стоит обратить внимание, заключается в том, что в файле у меня был блок User.transaction do..end, который раньше находился в файле до переименования, но я также удалил код транзакции.

Вот некоторые вещи, которые я пытался сделать для решения проблемы.

  • Перезапустил сервер
  • Выйти из среды разработки, сделать кэши недействительными, перезапустить
  • перезагрузил мою машину
  • Попытка удалить и воссоздать БД с грабли db: drop (сбой db: drop с ошибкой simialr)
    • Остановлен и перезапущен postgres
    • Очищены и восстановлены все драгоценные камни.

Я также смог получить прямой доступ к БД без рельсов через консоль sql. Там нет проблем.

Среда - Rails 5.2.1 Ruby 2.5 Activerecord-5.2.1

Предлагаемые средства защиты?

...