我在Heroku中部署了我的RoR应用程序,并进行了Devise身份验证。一切正常,但2天前,我被告知将执行常规Postgresql维护。
之后,我的用户无法登录应用程序。
该应用程序工作正常,因为每个部分都有用户验证异常显示,因为它应该.我已经检查了Postgresql中的DB,它是连接的,自从我做了创建一个新用户的练习,并在控制台中检查时工作正常.
但是Heroku日志显示了一个我不理解的错误,Heroku的官方回答是维护不是问题,因为他们只是改变了DB的服务器,而不是其他的,我应该在这里检查解决方案。
我一直在阅读其他SO的帖子,他们建议ENV变量可能有变化,但我检查了CLI和 Jmeter 板,他们一致。
我不明白这个错误,也不知道怎么解决,请帮助我。
我想问题是从这里开始的"2023 - 03 - 01T17:52:29.666252 + 00:00 app [web.1]:[3dc02649-ca11 - 474b-bcb7-d08223602e58]无方法错误(未定义#〈用户ID的方法"为空?"):所有用户信息正确):"。
我不知道未定义的方法'empty?'指的是什么,因为我已经几个月没有接触任何与Devise或User DB相关的东西了。
只得到了Heroku的支持,但他们说这超出了他们的范围。
我已经检查了用户和设备验证的数据库配置,没有任何更改。
Heroku错误日志(jpg格式)
编辑
我再次通过Heroku进入Rails控制台,看到创建了一个新用户,在category列中它给出了它应该给出的内容,正如您可以看到的模式,它应该是category:"Estándar",但它给出了"Estándar"。我发布了两个截图
将日志编辑为文本
2023 - 03 - 01T21:44:34.378516 + 00:00英雄[路由器]:地址=信息方法= POST路径= "/用户/登录"主机= www.example.com请求ID = ef17f39d-6b6c-4d7b-8d8e-9d278b175157转发=" www.example.com "动态= web.1连接= 0毫秒服务= 282毫秒状态= 500字节= 1861协议= https 2023 - 03 - 01T21:44:34.365860 + 00:00应用程序[web.1]:app.orbochile.com[ef17f39d-6b6c-4d7b-8d8e-9d278b175157]在267毫秒内完成201次创建(浏览次数:138.84.33.192有效记录:6.0ms拨款:2879)2023年3月1日21:44:34.377567 + 00:00应用程序[web.1]:|F,[2023年3月1日T21:44:34.377503第2号]致命--:[电子表格17f39d-6b6c-4d7b-8d8e-9d278b175157]| Allocations: 2879) 2023-03-01T21:44:34.377567+00:00 app[web.1]: F, [2023-03-01T21:44:34.377503 #2] FATAL -- : [ef17f39d-6b6c-4d7b-8d8e-9d278b175157]
2023年3月1日21:44:34.377569 + 00:00应用程序[web.1]:无方法错误(未定义的方法empty?' for #<User id: 1, email: "comunidad@orbochile.com", 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
方法_缺失'2023 - 03 - 01T21:44:34.377573 + 00:00应用程序[web.1]:[ef17f39d-6b6c-4d7b-8d8e-9d278b175157]机架(2.2.6.2)库/机架/电子标签. rb:71:每个x 1米1英寸'2023年3月1日21:44:34.377574 + 00:00应用程序[web.1]:动作包(7.0.3.1)库/动作分派/http/响应. rb:146:以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年3月1日21:44:34.377574 + 00:00应用程序[web.1]:动作包(7.0.3.1)库/动作分派/http/响应. rb:76:以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年3月1日21:44:34.377575 + 00:00应用程序[web.1]:[ef17f39d-6b6c-4d7b-8d8e-9d278b175157]机架(2.2.6.2)库/机架/主体_代理. rb:41:在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
摘要_主体中'2023 - 03 - 01T21:44:34.377576 + 00:00应用程序[web.1]:[ef17f39d-6b6c-4d7b-8d8e-9d278b175157]机架(2.2.6.2)库/机架/电子标签. rb:33:在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黑鹿[路由器]:地址=信息方法= POST路径= "/用户/登录"主机= www.example.com请求ID = 574ab971 - 6fde-468d-9514 - 7c441c1fdd2b转发=" www.example.com "动态= web.1连接= 0毫秒服务= 264毫秒状态= 500字节= 38协议= https 2023 - 03 - 01T22:24:56.528275 + 00:00应用程序[web.1]: app.orbochile.com[574ab971 - 6fde-468d-9514 - 7c441c1fdd2b]在252毫秒内完成了201次创建(查看次数:138.84.33.192有效记录:3.8ms拨款:2846)2023年3月1日22:24:56.538037 + 00:00应用程序[web.1]:|2023年3月1日22:24:56 +0000读取:#〈无方法错误:|未定义#〈User id的方法'bytesize':1,邮箱:"www. example. com",姓名:"伊格纳西奥",昵称:"aiem2",电话:"56981855165",城市:"潘奎韦",状态:"瓦尔帕莱索",出生日期:comunidad@orbochile.com"阳刚",管理员:真,创建时间:"2022年6月7日12:43:16.877117000 -0400",更新时间_网址:"2023年3月1日19:24:56.520624000 -0300",类别:"Colaborador",年龄:37岁,年龄:"35 a 44",姓氏:"埃斯皮诺萨",超级管理员:正确,测试人员:假,用户类型:超级管理员〉〉 "Colaborador", age: 37, ages: "35 a 44", last_name: "Espinosa", superadmin: true, tester: false, type_user: "Superadministrador">>"
2条答案
按热度按时间kxkpmulp1#
我在发布的日志中看到的第一个错误是:
这显然是代码中的错误,因为您在User示例上调用方法
empty?
,而该方法未定义):也许这是您过去添加的内容,但从现在起从未部署过...或者是一个“糟糕”的部署,没有重新启动您的工作机?
我将从检查代码中的所有
.empty?
调用开始。ou6hu8tu2#
答案
问题不在于Heroku,也不在于维护或其他类似的问题。
方法缺少空?是因为Devise Gem的最新更新。
4.9.0 - 2023年2月17日(92科)
4.8.1 - 2021年12月16日(89 ko)
我上次提交和推送是在2月6日,我没有在我的gem文件中指定Devise的版本,因此,在我2天前做的新的提交和推送中,Heroku正确地更新了我的包中的Devise版本,并产生了这个问题。
通过将Devise版本指定为我正在使用的没有bug的版本解决了这个问题,现在我将看到我必须做些什么来升级Devise版本。
谢谢大家的意见和建议的解决方案,这是我的第一个如此职位。