module CanCanUnauthorizedMessage
  # Fix deprecated syntax calling I18n#translate (using keyword args) without using **
  def unauthorized_message(action, subject)
    keys = unauthorized_message_keys(action, subject)
    variables = {:action => action.to_s}
    variables[:subject] = (subject.class == Class ? subject : subject.class).to_s.underscore.humanize.downcase
    message = I18n.translate(nil, **variables.merge(:scope => :unauthorized, :default => keys + [""]))
    message.blank? ? nil : message
  end
end

CanCan::Ability.prepend(CanCanUnauthorizedMessage)

Patch CanCan deprecated keyword arguments
Patch CanCan deprecated keyword arguments

Solves an issue with use of deprecated positional args. The version of CanCan which fixes this is not currently compatible with OFN...
