web-dev-qa-db-fra.com

skip_before_action et Rails 5

Je viens de passer à Rails 5 et tout s'est plutôt bien passé, mais sans raison apparente, une méthode appelée après skip_before_action ne permet pas à rspec de s'exécuter avec ce message

Avant le rappel de process_action: redirect_heroku_user n'a pas été défini (ArgumentError)

C'est super étrange car cela fonctionne très bien sur Rails 4. Voici mon code:

# application_controller.rb
def redirect_heroku_user
  redirect_to root_path if heroku_user?
end 

# some_controller.rb
skip_before_action :redirect_heroku_user, only: :edit
19
Bitwise

Selon ce fil

ActiveSupport :: Rappels #skip_callback déclenche désormais une ArgumentError si un rappel non reconnu est supprimé.

Votre solution consiste donc à passer raise: false option pour skip_before_action:

skip_before_action :redirect_heroku_user, raise: false

Voir le changelog pour plus d'informations.

26
Andrey Deineko

In Rails 5, si la méthode redirect_heroku_user n'est pas défini dans le même contrôleur, puis il déclenche cette exception.

Tu peux passer raise: false pour l'éviter car mentionné ici :

skip_before_action :redirect_heroku_user, only: :edit, raise: false
4
dp7