lib/moromi/error/renderer.rb in moromi-error-0.3.0 vs lib/moromi/error/renderer.rb in moromi-error-0.4.0

- old
+ new

@@ -6,14 +6,16 @@ ERROR_TEMPLATES = { default: 'moromi/error/default', }.freeze included do + class_attribute :default_moromi_error_template_path class_attribute :default_moromi_error_renderer_options class_attribute :moromi_error_logger - self.default_moromi_error_renderer_options = {partial: ERROR_TEMPLATES[:default], layout: false} + self.default_moromi_error_template_path = ERROR_TEMPLATES[:default] + self.default_moromi_error_renderer_options = {layout: false} self.moromi_error_logger = Moromi::Error::DefaultLogger.new end def render_bad_request(exception: Moromi::Error::Default.new, options: nil, locals: {}) render_error(400, 'Bad Request', exception, options: options, locals: locals) @@ -42,11 +44,10 @@ def render_too_many_requests(exception: Moromi::Error::Default.new, options: nil, locals: {}) render_error(429, 'Too Many Requests', exception, options: options, locals: locals) end def render_force_update(exception: Moromi::Error::NeedForceUpdate.new, options: nil, locals: {}) - options = options || {partial: ERROR_TEMPLATES[:default], layout: false} render_bad_request(exception: exception, options: options, locals: locals) end def render_internal_server_error(exception: Moromi::Error::Default.new, options: nil, locals: {}) render_error(500, 'Internal Server Error', exception, options: options, locals: locals) @@ -56,20 +57,21 @@ render_error(503, 'Service Unavailable', exception, options: options, locals: locals) end private - def render_error(status, title, exception, options: nil, locals: {}) + def render_error(status, title, exception, options: nil, template_path: nil, locals: {}) + template_path ||= self.class::default_moromi_error_template_path options = options || self.class::default_moromi_error_renderer_options e = Moromi::Error::Default.make(exception) self.class::moromi_error_logger.write(self, status, title, exception, options, locals) options = {status: status}.merge(options) locals = {status: status, title: title, exception: e}.merge(locals) render_block = -> { - render options.merge({locals: locals}) + render template_path, **options, locals: locals } respond_to do |format| format.html &render_block format.json &render_block