我在 Heroku 中部署了我的 RoR 应用程序,使用 Devise 身份验证。一切正常,但 2 天前,我被告知将执行例行的 Postgresql 维护。
之后,我的用户无法登录应用程序。
应用程序运行正常,因为每个有用户验证异常的部分都按应有的方式显示。我已经检查了 Postgresql 中的数据库,并且它已连接,自从我创建新用户并练习创建新用户以来,并且在我检查控制台时工作正常。
但是Heroku Logs显示错误,我不明白,Heroku的官方回答是维护不是问题,因为他们只是改变了DB的服务器,没有别的,我应该检查解决方案在这里。
我一直在阅读其他 SO 的帖子,他们建议 ENV var 可能有变化,但我检查了 CLI 和仪表板,它们是一致的。
我不明白错误或我该如何解决。请帮助。
我发现问题从这里开始“2023-03-01T17:52:29.666252+00:00 app[web.1]: [3dc02649-ca11-474b-bcb7-d08223602e58] NoMethodError(未定义方法‘空?’对于#
我不知道那个未定义的方法是“空的”?指的是,因为我已经几个月没有接触任何与 Devise 或用户数据库相关的东西了。
只接触到 Heroku 的支持,但他们说这超出了他们的范围。
我已经检查了用户的数据库配置和设计验证,没有任何改变。
编辑
我再次通过 Heroku 进入 Rails 控制台,我看到创建了一个新用户,并且在类别列中它给出了它应该的东西,正如你看到的模式它应该是类别:“Estándar”,但它给出了“ Est\xC3\xA1ndar”。我发布了两个截图
编辑日志作为文本
2023-03-01T21:44:34.378516+00:00 heroku[路由器]: at=info method=POST path="/users/sign_in" host=app.orbochile.com request_id=ef17f39d-6b6c-4d7b-8d8e- 9d278b175157 fwd="138.84.33.192" dyno=web.1 connect=0ms service=282ms status=500 bytes=1861 protocol=https
2023-03-01T21:44:34.365860+00:00 app[web.1]: I, [2023-03-01T21:44:34.365800 #2] 信息 -- : [ef17f39d-6b6c-4d7b-8d8e-9d278b175157]已完成 201 在 267 毫秒内创建(视图:0.1 毫秒 | ActiveRecord:6.0 毫秒 | 分配:2879)
2023-03-01T21:44:34.377567+00:00 app[web.1]: F, [2023-03-01T21:44:34.377503 #2] 致命——: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157]
2023-03-01T21:44:34.377569+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] NoMethodError (undefined method
empty?' for #<User id: 1, email: "[email protected]", name: "Ignacio", nick_name: "aiem2", phone: "56981855165", city: "Panquehue", state: "Valparaíso", dob: "1986-01-16", gender: "Masculino", admin: true, created_at: "2022-06-07 12:43:16.877117000 -0400", updated_at: "2023-03-01 18:44:34.357227000 -0300", category: "Colaborador", age: 37, ages: "35 a 44", last_name: "Espinosa", superadmin: true, tester: false, type_user: "Superadministrador">): 2023-03-01T21:44:34.377570+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] 2023-03-01T21:44:34.377572+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] activemodel (7.0.3.1) lib/active_model/attribute_methods.rb:458:in
method_missing'
2023-03-01T21:44:34.377573+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] 机架 (2.2.6.2) lib/rack/etag.rb:71:in block in digest_body' 2023-03-01T21:44:34.377573+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] actionpack (7.0.3.1) lib/action_dispatch/http/response.rb:146:in
每个'
2023-03-01T21:44:34.377574+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] actionpack (7.0.3.1) lib/action_dispatch/http/response.rb:146:in each_chunk' 2023-03-01T21:44:34.377574+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] actionpack (7.0.3.1) lib/action_dispatch/http/response.rb:128:in
每个'
2023-03-01T21:44:34.377574+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] actionpack (7.0.3.1) lib/action_dispatch/http/response.rb:76:in each' 2023-03-01T21:44:34.377575+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] actionpack (7.0.3.1) lib/action_dispatch/http/response.rb:481:in
每个'
2023-03-01T21:44:34.377575+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] 机架 (2.2.6.2) lib/rack/body_proxy.rb:41:in method_missing' 2023-03-01T21:44:34.377576+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] rack (2.2.6.2) lib/rack/etag.rb:69:in
digest_body'
2023-03-01T21:44:34.377576+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] 机架 (2.2.6.2) lib/rack/etag.rb:33:in call' 2023-03-01T21:44:34.377576+00:00 app[web.1]: [ef17f39d-6b6c-4d7b-8d8e-9d278b175157] rack (2.2.6.2) lib/rack/conditional_get.rb:40:in
呼叫'
编辑
这听起来可能是个疯狂的想法,但我创建了一个空的?我的用户模型中的方法,并将其推送到 Heroku。
还是不行,但是现在 MissingMethod 的错误信息是空的?没有出现,而是一条新的错误信息:
"2023-03-01T22:24:56.539181+00:00 heroku[路由器]: at=info method=POST path="/users/sign_in" host=app.orbochile.com request_id=574ab971-6fde-468d-9514 -7c441c1fdd2b fwd="138.84.33.192" dyno=web.1 connect=0ms service=264ms status=500 bytes=38 protocol=https
2023-03-01T22:24:56.528275+00:00 app[web.1]: I, [2023-03-01T22:24:56.528215 #2] 信息 -- : [574ab971-6fde-468d-9514-7c441c1fdd2b]完成 201 在 252 毫秒内创建(视图:0.2 毫秒 | ActiveRecord:3.8 毫秒 | 分配:2846)
2023-03-01T22:24:56.538037+00:00 app[web.1]: 2023-03-01 22:24:56 +0000 阅读:#
我在发布的日志中看到的第一个错误是:
NoMethodError (undefined method `empty?' for #<User: ...
所以这显然是您的代码中的一个错误,因为您在 User 实例上调用方法
empty?
并且该方法未定义):
> User.last.empty?
=> NoMethodError (undefined method `empty?' for #<User:0x0000000123a1a5d0>)
也许那是你过去添加的东西,但从现在开始就没有部署过它……或者可能是一个没有重启你的工人的“坏”部署?
我将从检查代码中的所有
.empty?
调用开始。