在localhost上开发rails应用程序,只要出现错误,您就可以在出现的rails页面上详细查看错误。但是,在Heroku上,出现错误时唯一出现的是“我们很抱歉,但出了点问题。”没有信息。我见过日志,这似乎没有帮助。有没有办法用详细的Rails错误页面替换那个通用的Heroku错误页面?
答案 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。可能类似于staging
或testing
,因为您不希望用户在实际网站上看到这类错误。
答案 3 :(得分:0)
我感觉到你的痛苦。尝试运行heroku run rails console
以获得更清晰的错误。希望有所帮助