【问题标题】:Password digest method functioning on localhost but not Heroku? (Hartl RubyOnRails Tutorial Chapter 7)密码摘要方法在本地主机上起作用但在 Heroku 上不起作用? (Hartl RubyOnRails 教程第 7 章)
【发布时间】:2012-04-10 20:26:54
【问题描述】:

我一直在学习 Hartl 出色的 RoR (3.2) 教程(并自始至终部署到 Heroku),我很困惑为什么 Heroku 版本不再反映本地托管应用程序的行为。

我在第 7.4.4 节的末尾:http://ruby.railstutorial.org/chapters/sign-up?version=3.2#top

我的本​​地托管应用程序通过了所有测试,并且能够创建新用户并在用户/电子邮件/密码输入不正确或不符合规范时给出适当的错误消息。在应用程序的 Heroku 部署中,我既没有成功创建用户,也没有更正错误页面,因为该版本中的密码摘要功能似乎有问题。我被带到一个通用的 Heroku “我们很抱歉,但出了点问题”页面。

“heroku 日志”命令给了我:

Started POST "/users" for 97.81.107.108 at 2012-04-10 19:41:17 +0000 2012-04-10T19:41:17+00:00 app[web.1]: Processing by UsersController#create as HTML 2012-04-10T19:41:17+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"0jnDCpFnVq9fd/v1lgLNB7g0wHuXGi5bocTD3SINRzc=", "user"=>{"name"=>"helloq", "email"=>"this@this.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create my account"} 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:increate' 2012-04-10T19:41:17+00:00 应用程序[web.1]: 2012-04-10T19:41:17+00:00 app[web.1]: NoMethodError(未定义方法password_digest=' for #<User:0x0000000229e9e0>): 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 heroku[router]: POST simple-sword-1851.herokuapp.com/users dyno=web.1 queue=0 wait=0ms service=128ms status=500 bytes=643 2012-04-10T19:41:17+00:00 app[web.1]: Completed 500 Internal Server Error in 104ms 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:innew'

当 password_digest 方法在本地部署上正常运行时,为什么我会收到 NoMethodError?我用 git 检查了我的本地版本和远程 heroku 版本是否相同,并且我确保迁移数据库并重新启动应用程序。

感谢您的任何建议!

【问题讨论】:

  • 我觉得应该有你的答案:click!
  • 添加 :password_digest 列的迁移是现有教程的一部分,在这种情况下已经迁移。不过还是谢谢。
  • 我遇到了完全相同的问题,我尝试了 heroku 重启,但在运行迁移后我仍然转到控制台,如果我输入用户并点击输入,用户对象仍然没有密码字段

标签: ruby-on-rails heroku railstutorial.org


【解决方案1】:

我也在完成本教程,并且即将完成。我想跟进 Matthias 的评论。看第 7 章,他还没有告诉你如何在 Heroku 上重置数据库。如果您想完全清除数据库并重新运行迁移,请执行以下操作:

heroku pg:reset SHARED_DATABASE --confirm simple-sword-1851
heroku run rake db:migrate

当我在迁移过程中搞砸了一些事情时,我偶尔会遇到一些问题。

【讨论】:

  • 我还没有到达任何地方。我查看了过去运行的迁移,并且已经根据 Matthias 的建议(以及教程中的说明)添加了一个 :password_digest 列。我确实重置了数据库,但对错误没有任何影响。除了找到解决方案之外,我只是不确定为什么 Heroku 环境不能复制我的本地环境。谢谢大家。
  • 您可以使用“heroku run rails c”来获取远程控制台。在提示符下键入 User 以查看对象定义。
  • 你的这个建议肯定让我走上了正轨!在 Heroku 控制台实例中调用 User 对象表明我确实缺少 password_digest 条目,并且对迁移的连续几轮修补显示了问题。我在添加 password_digest 列之前编码的最后一次迁移不知何故在我的工作目录中被复制了 - 在 Heroku 上运行迁移会导致错误消息,并且所有后续迁移都已停止。删除重复文件、提交、推送到 Heroku 并再次迁移解决了它!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 2020-08-25
  • 2015-02-25
相关资源
最近更新 更多