Rescue

I am having problems with rescue actions. Currently using ‘development’
and it is sending e-mails no problem but it still drives me to the error
page…

My specific error at this point is
ActionController::InvalidAuthenticityToken
and I am using an expired session to generate the errors.

in application.rb I have…

this part doesn’t seem to work

def rescue_action_in_public(exception)
if exception == “ActionController::InvalidAuthenticityToken”
flash[:notice]=“Your session expired”
redirect_to :controller => ‘login’, :action => ‘login’
else
flash[:notice]=“The Application Server dumped”
request.env[“HTTP_REFERER”]
redirect_to :back
end
end

this part works…I get the e-mails

protected

Provides code to create an email generated upon error

def log_error(exception)
super(exception)
begin
ErrorMailer.deliver_snapshot(
exception,
clean_backtrace(exception),
session.instance_variable_get("@data"),
params,
request.env)
rescue => e
logger.error(e)
end
end

Craig


This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

On Oct 4, 8:50 pm, Craig W. [email protected] wrote:

I am having problems with rescue actions. Currently using ‘development’
and it is sending e-mails no problem but it still drives me to the error
page…

My specific error at this point is
ActionController::InvalidAuthenticityToken
and I am using an expired session to generate the errors.

Your if statement is bogus, you’re just comparing an exception object
with a string. Try using is_a? to see if the exception object is an
instance of a given exception class. See also rescue_from

Fred

Fred

On Sun, 2009-10-04 at 13:33 -0700, Frederick C. wrote:

this part doesn’t seem to work

    session.instance_variable_get("@data"),
    params,
    request.env)
rescue => e
  logger.error(e)
end

end

Craig


I’ve been looking at rescue_from (API)

I figured out that part of my problem is rescue_action_in_public doesn’t
fly for development which is fine because I can remove ‘in_public’ while
testing in development.

so far, if exception == “ActionController::InvalidAuthenticityToken”
seems to be functioning as I would actually expect.

Craig


This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

On Sun, 2009-10-04 at 14:07 -0700, Craig W. wrote:

    exception, 

values either (well, I know if the session is deleted, I wouldn’t get

and similar for @env but both return empty sections.

but similar using @params does return values.


something changed in Rails 2.3.2 and @params and @env are good but
@session seems to be nil - even when there is an active session.

If someone wants to toss me a bone here, I will adjust my code but for
now, I just commented out the @session section so I can move on.

Craig


This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

On Oct 5, 4:52 am, Craig W. [email protected] wrote:

On Sun, 2009-10-04 at 14:07 -0700, Craig W. wrote:

On Sun, 2009-10-04 at 12:50 -0700, Craig W. wrote:


something changed in Rails 2.3.2 and @params and @env are good but
@session seems to be nil - even when there is an active session.

If someone wants to toss me a bone here, I will adjust my code but for
now, I just commented out the @session section so I can move on.

Session handling was in large part rewritten for 2.3.2 - assumptions
like there being an instance variable called @data almost certainly
no longer hold.

Fred

On Sun, 2009-10-04 at 12:50 -0700, Craig W. wrote:

    session.instance_variable_get("@data"), 
    params, 
    request.env)
rescue => e
  logger.error(e)
end

end


as long as I am at this, I don’t seem to get the environment or session
values either (well, I know if the session is deleted, I wouldn’t get
any values but when I have an error in a valid session, I would expect
to get the session values but I don’t. @session and @env seem to
generate errors.

I have this code in error_mailer.rb

<% for key, val in @session -%>

<%= key %>

<%= val.to_yaml.to_a.join("

\n

") %>

<% end -%>

and similar for @env but both return empty sections.

but similar using @params does return values.

Craig


This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

On Mon, 2009-10-05 at 00:39 -0700, Frederick C. wrote:

If someone wants to toss me a bone here, I will adjust my code but for
now, I just commented out the @session section so I can move on.

Session handling was in large part rewritten for 2.3.2 - assumptions
like there being an instance variable called @data almost certainly
no longer hold.


I don’t know about ‘assumptions’ but I know that all of the previous
‘how-to’ error notification wikis primarily do this…

in a protected area of your application.rb
def log_error(exception)
super(exception)
begin
ErrorMailer.deliver_snapshot(
exception,
clean_backtrace(exception),
session.instance_variable_get("@data"),
params,
request.env)
rescue => e
logger.error(e)
end
end

so it appears that
session.instance_variable_get("@data")

gets me nothing of value and I wanted the current session hash here, but
I don’t know how to get this from the changed Rails.

Yes, this is definitely changed in Rails 2.3 and pretty much every error
notification I have found on the Internet now is broken.

Craig


This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

On 5 Oct 2009, at 15:14, Craig W. wrote:

notification I have found on the Internet now is broken.

If I were you I’d stick a breakpoint somewhere around there and fiddle
with the session object to see what it’s got.

Fred

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs