【问题标题】:Heroku error: We're sorry, but something went wrongHeroku 错误:我们很抱歉,但出了点问题
【发布时间】:2016-10-13 11:19:26
【问题描述】:

我已将应用程序部署到 heroku(udemy.com 的“ROR 开发人员课程”下的财务跟踪器)。登录按钮工作正常,但是当我点击注册按钮时,它给了我这个错误

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

我已经成功运行了 heroku run rake db:migrate。 我使用设计 gem 进行身份验证。 请问有人知道吗??....谢谢

编辑

来自日志:

2016-10-26T17:46:19.965045+00:00 heroku[router]: at=info method=GET   path="/users/sign_up" host=johnuzoma-finance-tracker.herokuapp.com   request_id=9b928dfe-66be-47b5-933b-3d5b6cf3a899 fwd="197.210.25.210"   dyno=web.1 connect=0ms service=19ms status=500 bytes=1754
2016-10-26T17:46:19.950321+00:00 app[web.1]: Started GET "/users/sign_up"  for 197.210.25.210 at 2016-10-26 17:46:19 +0000
2016-10-26T17:46:19.955368+00:00 app[web.1]: Processing by  User::RegistrationsController#new as HTML
2016-10-26T17:46:19.957892+00:00 app[web.1]: Completed 500 Internal  Server Error in 2ms (ActiveRecord: 0.0ms)
2016-10-26T17:46:19.958887+00:00 app[web.1]:
2016-10-26T17:46:19.958889+00:00 app[web.1]: NoMethodError (undefined  method `for' for #<Devise::ParameterSanitizer:0x007f782dff6408>):
2016-10-26T17:46:19.958890+00:00 app[web.1]:    app/controllers/user/registrations_controller.rb:7:in `configure_permitted_parameters'
2016-10-26T17:46:19.958891+00:00 app[web.1]:
2016-10-26T17:46:19.958892+00:00 app[web.1]:
2016-10-26T17:46:20.651597+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=johnuzoma-finance-tracker.herokuapp.com request_id=8d875ac1-de78-47 68-9cd0-a653afd2318b fwd="197.210.25.210"  dyno=web.1 connect=0ms service=6ms status=304 bytes=133

RegistrationsController 代码

class User::RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:first_name,  :last_name)
    devise_parameter_sanitizer.for(:account_update).push(:first_name, :last_name)
  end
end

【问题讨论】:

  • 运行这个命令“heroku logs”来检查错误日志
  • 运行heroku logs -t 并重新创建错误。日志将为您提供有关导致它的原因的线索。如果您仍然无法自己弄清楚,请在此处发布日志。
  • 您还可以安装免费的 PaperTrail 插件,以便轻松查看和搜索您的 Heroku 日志。
  • 这方面有进展吗?

标签: ruby-on-rails heroku devise


【解决方案1】:

因此,您应该做的第一件事是转到应用程序的 Heroku 管理面板并查看日志文件。你应该找到一个堆栈跟踪(应该看起来像一个错误,后面跟着一堆方法调用和行号)。另一种选择是让您远程访问应用服务器,转到您计算机上的 Heroku 应用目录并运行(假设您已安装 Heroku CLI)

heroku run bash 

然后导航到您的日志目录并运行

tail -f <replace_with_log_file_name>

(日志文件应该是 production.log 或 develop.log),它将向您显示日志活动的实时流,因此只需重新创建错误,看看会发生什么。

替换这些行

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up).push(:first_name,  :last_name)
  devise_parameter_sanitizer.for(:account_update).push(:first_name, :last_name)
end

用这些线

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name,  :last_name])
  devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name])
end

发生的情况是您使用的 gem devise 更改了其 API 版本,因此您使用的语法不再有效。我假设您在某个时间点进行了捆绑更新或无意中升级了您的 gem

【讨论】:

  • ~/log $ tail -f bash: 意外标记 `newline' 附近的语法错误
  • O 很抱歉,您没有在文档中包含通常很短且用于变量的 ,尽管它不是那么普遍,以至于我应该期望每个人都能理解它,所以我很糟糕。试试~/log $ tail -f development.log
  • 这样做但我得到了这个:tail: cannot open `development.log' for reading: No such file or directory
  • 好的,当你在log 目录中时,输入ls 并告诉我其中的.log 文件的名称是什么?
  • 仅生产.log
【解决方案2】:

如果您在通过 Heroku 日志确定错误时遇到这么大的困难,您可以尝试的另一件事是您可以在浏览器本身上看到错误,并在您的 production.rb 文件中执行此操作(您可以在 config/environments 中找到该文件)目录)更改:

config.action_controller.consider_all_requests_local = false 

收件人:

config.action_controller.consider_all_requests_local = true

现在再次在 Heroku 上部署您的应用,一切顺利。

【讨论】:

  • 如此有效,这将允许任何人弄清楚您的代码在做什么,并为您打开无数漏洞。
  • 漏洞很远,先生……这个人甚至不知道 heroku logs 命令。
猜你喜欢
  • 1970-01-01
  • 2012-07-29
  • 2012-04-19
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多