class Object

Constants

DEFAULT_STATUS_LAYOUT

Public Class Methods

handles_error_status() click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 65
def handles_error_status
  status_action :internal_server_error
  skip_before_action :verify_authenticity_token, only: :internal_server_error, if: -> { request.format.js? }
  rescue_from Exception, with: :internal_server_error
end
handles_not_found_status() click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 71
def handles_not_found_status
  status_action :not_found
  skip_before_action :verify_authenticity_token, only: :not_found, if: -> { request.format.js? }
  rescue_from *[
    ActiveRecord::RecordNotFound,
    ActionController::RoutingError,
    ActionController::UnknownFormat,
    ::AbstractController::ActionNotFound
  ], with: :not_found
end
status_action(*status) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 55
def status_action(*status)
  status.each do |_status|
    unless instance_methods.include? _status
      define_method _status do |*_, format: nil, layout: nil|
        render_status _status, format: format, layout: layout
      end
    end
  end
end
status_format(only: nil, except: nil)
Alias for: status_formats
status_format?(format) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 5
def status_format?(format)
  (status_formats[:only].include?(format) || status_formats[:only].empty?) && !status_formats[:except].include?(format)
end
status_formats(only: nil, except: nil) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 9
def status_formats(only: nil, except: nil)
  @status_formats = { only: [], except: [] } unless @status_formats.is_a? Hash

  only = only.to_sym if only.is_a? String
  only = [only] if only.is_a? Symbol

  except = only.to_sym if only.is_a? String
  except = [only] if only.is_a? Symbol

  if only.is_a? Array
    @status_formats[:only] = (@status_formats[:only] + only).uniq
  end

  if except.is_a? Array
    @status_formats[:except] = (@status_formats[:except] + except).uniq
    @status_formats[:only] -= except
  end

  @status_formats
end
Also aliased as: status_format
status_layout(*name) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 31
def status_layout(*name)
  @status_layout = name.first if name.any?
  @status_layout == false ? nil : (@status_layout || DEFAULT_STATUS_LAYOUT)
end

Public Instance Methods

handles_not_found_status() click to toggle source
# File lib/httpstatus/core_ext/mapper.rb, line 2
def handles_not_found_status
  match '*path' => 'application#not_found', via: :all
end
render_status(status, format: nil, layout: nil) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 43
def render_status(status, format: nil, layout: nil)
  format = (format.present? ? format : request.format).to_sym
  format = self.class.status_formats[:only].first || :html unless status_format? format
  layout = layout.nil? ? self.class.status_layout : layout
  layout = false unless lookup_context.exists? layout, [], false, formats: [format]
  layout = "layouts/#{layout}" unless layout == false

  @status = Httpstatus::Status.new status
  render 'http/status', formats: [format], layout: layout, status: @status.key
end
status_format?(format) click to toggle source
# File lib/httpstatus/core_ext/action_controller.rb, line 39
def status_format?(format)
  lookup_context.exists?('http/status', [], false, [], formats: [format]) && self.class.status_format?(format)
end