Я использую angular6 с rails5 для моего приложения.В части rails я использую devise token auth gem для аутентификации пользователя, а angular6 имеет библиотеку webpack , которая запускает перекомпиляцию углового приложения при внесении изменений в его исходный код.Иногда, когда я делаю изменения в угловом исходном коде, приложение выдает мне 401 ошибка .Таким образом, в журнале rails я вижу это
webserver | User Load (3.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
webserver | SQL (31.7ms) UPDATE "users" SET "tokens" = ?, "updated_at" = ? WHERE "users"."id" = ? [["tokens", "{\"3JmFXxw9mnEMU6OaYiwggw\":{\"token\":\"$2a$10$Y9p64IsbtPpqOBpvfjESGOtwREbpBVAKNnRUTR0gNIdvcAl2qrIpa\",\"expiry\":1539582854,\"last_token\":\"$2a$10$LsJWKxuOqo5hZWXOdiRTh.h3eetLPpFIHeq01xa6IA7XtI2C73opK\",\"updated_at\":\"2018-10-01T05:54:16.864+00:00\"},\"oFIZqHvY3XfQJGrn8UoYCA\":{\"token\":\"$2a$10$uub.eU4nXlFrbKIY5xprguK0HtZ1P9Pp6g7MijsVTXA17jXtOIXRq\",\"expiry\":1539925310,\"last_token\":\"$2a$10$Y9YuFUDNmIhwp4UcWTG9GuxpOea7Yoi86FLvV36QgFxq9JwaE42J2\",\"updated_at\":\"2018-10-05T05:01:51.331+00:00\"},\"Uf6AwSc-crjvI_peddZZmQ\":{\"token\":\"$2a$10$HLdVsEfKCgLQHPUfreOZe.5f1soQhhLhmXjClAwulJ/OyYiXhacJm\",\"expiry\":1540279010,\"last_token\":\"$2a$10$5eRS9ZgOheU0KmrU8ytHt.QaJ55VKhEML0ez2AInXrF5noJHzKQSG\",\"updated_at\":\"2018-10-09T07:16:50.317+00:00\"},\"aycoVJeYz6hN8dGf82kPHA\":{\"token\":\"$2a$10$ByRA/KHMgQiJ/zNKGRSUGOOZtyD3nH5MMdYUDNbJTcGK7fjsBRE1W\",\"expiry\":1540429774,\"last_token\":\"$2a$10$sL.Ykb/hXnffSfJHDAAUSu5Vl77rEkNZiw31X6DZzCEpEfLc7wtWC\",\"updated_at\":\"2018-10-11T01:09:34.641+00:00\"},\"7Ag8AoIXBg1xd0pJqikNIQ\":{\"token\":\"$2a$10$uy/vcobeQvJlv5e8W3meP.ulNc/6mP5W7gB6OJJq1oKpIP6bpd0ii\",\"expiry\":1540451318,\"last_token\":\"$2a$10$q0X0WOsYkAy4D2epfPk/N.sT7lUldeX2jjDaTXZghc2Kj3KgW2aUm\",\"updated_at\":\"2018-10-11T07:08:40.761+00:00\"}}"], ["updated_at", "2018-10-11 07:08:40.763893"], ["id", 1]]
webserver | User Load (3.1ms) SELECT "users".* FROM "users" WHERE "users"."uid" = ? LIMIT ? [["uid", "admin@example.com"], ["LIMIT", 1]]
webserver | SQL (0.6ms) UPDATE "users" SET "tokens" = ?, "updated_at" = ? WHERE "users"."id" = ? [["tokens", "{\"3JmFXxw9mnEMU6OaYiwggw\":{\"token\":\"$2a$10$Y9p64IsbtPpqOBpvfjESGOtwREbpBVAKNnRUTR0gNIdvcAl2qrIpa\",\"expiry\":1539582854,\"last_token\":\"$2a$10$LsJWKxuOqo5hZWXOdiRTh.h3eetLPpFIHeq01xa6IA7XtI2C73opK\",\"updated_at\":\"2018-10-01T05:54:16.864+00:00\"},\"oFIZqHvY3XfQJGrn8UoYCA\":{\"token\":\"$2a$10$uub.eU4nXlFrbKIY5xprguK0HtZ1P9Pp6g7MijsVTXA17jXtOIXRq\",\"expiry\":1539925310,\"last_token\":\"$2a$10$Y9YuFUDNmIhwp4UcWTG9GuxpOea7Yoi86FLvV36QgFxq9JwaE42J2\",\"updated_at\":\"2018-10-05T05:01:51.331+00:00\"},\"Uf6AwSc-crjvI_peddZZmQ\":{\"token\":\"$2a$10$HLdVsEfKCgLQHPUfreOZe.5f1soQhhLhmXjClAwulJ/OyYiXhacJm\",\"expiry\":1540279010,\"last_token\":\"$2a$10$5eRS9ZgOheU0KmrU8ytHt.QaJ55VKhEML0ez2AInXrF5noJHzKQSG\",\"updated_at\":\"2018-10-09T07:16:50.317+00:00\"},\"aycoVJeYz6hN8dGf82kPHA\":{\"token\":\"$2a$10$ByRA/KHMgQiJ/zNKGRSUGOOZtyD3nH5MMdYUDNbJTcGK7fjsBRE1W\",\"expiry\":1540429774,\"last_token\":\"$2a$10$sL.Ykb/hXnffSfJHDAAUSu5Vl77rEkNZiw31X6DZzCEpEfLc7wtWC\",\"updated_at\":\"2018-10-11T01:09:34.641+00:00\"},\"7Ag8AoIXBg1xd0pJqikNIQ\":{\"token\":\"$2a$10$uy/vcobeQvJlv5e8W3meP.ulNc/6mP5W7gB6OJJq1oKpIP6bpd0ii\",\"expiry\":1540451318,\"last_token\":\"$2a$10$q0X0WOsYkAy4D2epfPk/N.sT7lUldeX2jjDaTXZghc2Kj3KgW2aUm\",\"updated_at\":\"2018-10-11T07:08:40.925+00:00\"}}"], ["updated_at", "2018-10-11 07:08:40.927305"],["id", 1]]
webserver | (5145.6ms) commit transaction
webserver | Role Load (5135.6ms) SELECT "roles".* FROM "roles" INNER JOIN "user_roles" ON "roles"."id" = "user_roles"."role_id" WHERE "user_roles"."user_id" = ? [["user_id", 1]]
webserver | (12.1ms) rollback transaction
webserver | Completed 500 Internal Server Error in 12662ms (Views: 0.3ms | ActiveRecord: 5211.7ms)
webserver |
webserver |
webserver | (0.2ms) rollback transaction
webserver | Completed 500 Internal Server Error in 12311ms (Views: 0.3ms | ActiveRecord: 34.3ms)
webserver |
webserver |
webserver |
webserver | ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: UPDATE "users" SET "tokens" = ?, "updated_at" = ? WHERE"users"."id" = ?):
Основываясь на этом журнале, я знаю, что эта ошибка возникает из-за того, что вторая транзакция User Load gem для devis token вызывается до завершения первой транзакции User Load, что вызываетв базе данных BusyException ошибка.
Мой вопрос:
- Не вызывает ли веб-пакет вызов транзакции User Load таким образом?
- Как вызывается API-интерфейс из скомпилированного кода из веб-пакета?
- Является ли использование веб-пакета с гемом devise token auth хорошей идеей?