On Wed, Oct 6, 2010 at 6:57 PM, Markus Roberts <[email protected]>wrote:

> Igal wrote:
> > If a method returns an unexpected object, and we haven't taught all the
> > rest of our code to check whether it received an imposter, it's too easy
> to
> > accidentally have our code treat it like a real object.
>
> I thought that was the whole point of duck typing; that you shouldn't
> obsess over the "real object"/"impostor" distinction.
>
> If Nick is correct that this blank report doesn't pass validation,
> where exactly does the problem arise?  Would having the rescue return
> nil (and adding a "report_is_present" validation) suffice?  This
> assumes on the validations being ordered, which I'm not enough of a
> rails nerd to know the practicality of.
>
>
Unfortunately, this actually causes bigger problems, because the report
method is an override. From what I can surmise from experimentation, if it
returns nil, rails assumes you want it to fall back to the default method,
which then fails with the same error we deliberately rescued in our
overridden version. This has the additional effect of also failing every
time an invalid report is used, not just when they're created.


> Nick wrote:
> > [one] alternative is to make all of our code smart enough to
> > handle the (supposedly impossible) case where an invalid report does make
> it
> > into the system. I would rather not add lots of special handling for
> > something which is theoretically not possible.
>
> I wholeheartedly agree.  Especially since the list of things that are
> theoretically impossible is...rather large.  You can't have a policy
> of checking for them, or your code will grow without bound.
>
> Nick wrote:
> > It might be possible to catch the error when it happens and transform it
> > into a validation failure. I will investigate that.
>
> That would be a lot better.  The patch as written appears to depend on
> the report_contains_metrics validation knowing that what it got was
> "wrong."
>
> -- Markus
> -----------------------------------------------------------
> The power of accurate observation is
> commonly called cynicism by those
> who have not got it.  ~George Bernard Shaw
> ------------------------------------------------------------
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<puppet-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" 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/puppet-dev?hl=en.

Reply via email to