got it .. and it's running well , may be not the best coding , but it
runs ....
in my config/initializers/custom_exceptions.rb
Module Exceptions
class RemoteContainerDenied < StandardError
def initialize(msg, remote_container_id, request_id , user_id)
super(msg)
@message = msg
@request_id = request_id
@remote_container_id = remote_container_id
@user_id = user_id
end
def message; @message + "remote_container_id:
#{@remote_container_id} , requestId: #{@request_id}"; end
def remote_container_id; @remote_container_id; end
def request_id; @request_id; end
def user_id; @user_id; end
end
end
raised with :
raise(RemoteContainerDenied.new("Access denied",
remote_container_id[:id], request[:id], user[:id] ) if response.nil?
et voilà ...
then I can trap these exceptions in delayed_job ( error hook) and act
according to the exception :
def error(job, exception)
case exception
when RemoteLockerDenied
AdminMailer.....
very awesome
On 23 mai, 11:38, Frederick Cheung <[email protected]> wrote:
> On May 23, 7:11 am, Erwin <[email protected]> wrote:> Thanks Fred
>
> > I believe I can pass parameters to the Exception class for fine grain
> > processing
> > will read more about it .. any better link than Rials doc ,
>
> You probably want some pure ruby documentation - this isn't rails
> specific at all.
> Your subclasses of StandardError can store as many extra bits of
> information about the error that occurred as you want - just override
> the initialize method to stash the information in an instance variable
> or something like that
>
> Fred
>
>
>
> > On 22 mai, 19:06, Frederick Cheung <[email protected]> wrote:
>
> > > On May 22, 4:36 pm, Erwin <[email protected]> wrote:
>
> > > > I a using delayed_job, and I am raising an exception this way :
>
> > > > config/initializers/custom_exceptions.rb
> > > > class RemoteLockerException < StandardError; end
> > > > class RemoteLockerDenied < StandardError; end
>
> > > This should define just RemoteLockerDenied, not
> > > Exceptions::RemoteLockerDenied.
>
> > > > there is a hook for any exception raised, to trap ALL the errors
> > > > and do something according to the raised exception , i.e. :
>
> > > > def error(job, exception)
> > > > case exception
> > > > when "RemoteContainerDenied"
> > > > .. do something
> > > > when "RemoteContainerException"
> > > > .. do something else ......
> > > > end
> > > > end
>
> > > Your whens should use the exception class, not the name, ie
>
> > > when RemoteLockerDenied instead of when 'RemoteLockerDenied'
>
> > > Fred
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.