显示Rails错误页面的方法,而不是模糊的Heroku错误页面

时间:2015-09-03 14:47:53

标签: ruby-on-rails heroku

在localhost上开发rails应用程序,只要出现错误,您就可以在出现的rails页面上详细查看错误。但是,在Heroku上,出现错误时唯一出现的是“我们很抱歉,但出了点问题。”没有信息。我见过日志,这似乎没有帮助。有没有办法用详细的Rails错误页面替换那个通用的Heroku错误页面?

4 个答案:

答案 0 :(得分:3)

这不是特定于heroku的问题,而是生产环境问题。在任何制作设置中,您都可以通过更改config/environments/production.rb

中的此行来显示完整错误
config.consider_all_requests_local = false

config.consider_all_requests_local  = true

请注意,用户看不到的更好的替代方法是继续显示生产样式错误,并使用以下命令拖尾日志文件:

heroku logs --app <yourappname> --tail

这将运行日志文件的流,因此您不会错过任何内容,而不仅仅是最后40行。

如果您没有看到足够的信息,请在config/environments/production中添加或更改log_level以进行调试

config.log_level = :info

或者您可以使用环境变量重置日志级别,因此您可以删除它并重新启动而不是重新部署:

heroku config:add LOG_LEVEL=DEBUG --app <yourappname>

答案 1 :(得分:2)

这可以让你去..

的routes.rb

match "/404", :to => "exceptions#some_error"
match "/500", :to => "exceptions#some_error"
#add some more?

那么,

class ExceptionsController < ApplicationController

  def some_error
      @exception = env["action_dispatch.exception"]
      @status_code = ActionDispatch::ExceptionWrapper.new(env, @exception).status_code
  end

end
最后是一个视图页面,要显示异常,你将会修复。

答案 2 :(得分:1)

在您的rails应用中,在config/environments/production.rb下,尝试更改

config.consider_all_requests_local = false

config.consider_all_requests_local = true

注意:当您想要查看正常的rails错误消息时,您可能需要设置一个新环境并将其部署到Heroku。可能类似于stagingtesting,因为您不希望用户在实际网站上看到这类错误。

答案 3 :(得分:0)

我感觉到你的痛苦。尝试运行heroku run rails console以获得更清晰的错误。希望有所帮助