[katello-devel] before_filter behavior and notices
Dmitri Dolguikh
dmitri at redhat.com
Wed Jul 20 14:14:54 UTC 2011
On 11-07-20 10:09 AM, Brad Buckingham wrote:
> Team,
>
> While working on activation keys within a remote branch, I decided to
> do some 'copy/paste' reuse
> of a before_filter. In doing so, I observed a couple of issues with
> the filter that I chose to 'reuse'. After looking further, I found
> that the same issues existed in several controllers. This email is to
> share the finding, in case others may benefit.
>
> Observation/Issue 1 - several of the before_filters are used to fetch
> ActiveRecord data (e.g. find); however, they are not catching the
> exception if the ActiveRecord cannot be found. As a result, the error
> logic contained in the filter is being skipped.
> Fix - wrap the find in a begin/rescue block, catching the AR
> exceptions.
>
> Observation/Issue 2 - when the exception is caught, the error notice
> (i.e. errors) is not being displayed to the user. The reason being,
> the error handling logic in these filters generally performs a render
> or redirect, which will halt the filter chain causing the
> flash_to_headers after_filter not to be executed.
> Fix - added a new method to the ApplicationController called
> 'execute_after_filters' and call this method from within the
> before_filter's error leg. This method currently only calls
> 'flash_to_headers'; however, if other after_filters are introduced in
> the ApplicationController in the future, they can also be added here.
>
> I have gone through the code to address these observations in the UI
> controllers, where appropriate. For details on the commit, it is:
>
> http://git.fedorahosted.org/git/?p=katello.git;a=commit;h=5165c9b2cc463a80df0ed73b22d006b8ff65e6e3
>
>
> For an example of the typical changes made to the filters, see:
>
> http://git.fedorahosted.org/git/?p=katello.git;a=blobdiff;f=src/app/controllers/sync_plans_controller.rb;h=4e3fe1834d841fdfbe6c7b267574ca55b22bc146;hp=89b94e9e3957e351c1535c5fe98be8770fd71208;hb=5165c9b2cc463a80df0ed73b22d006b8ff65e6e3;hpb=b7cea35221795fa7a779e04fc524cd74b554596e
>
>
> thanks,
> Brad
>
> _______________________________________________
> katello-devel mailing list
> katello-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/katello-devel
You could also add a common exception handler to ApplicationContoller
using rescue_from.
-d
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/katello-devel/attachments/20110720/3cac65e1/attachment.htm>
More information about the katello-devel
mailing list