Skip to content

Comment on Github Ruby Styleguideparent

Comments

It's an imported Perlism, back from the days of the old assert idiom `foo == bar or die`.

If `foo == bar` evaluates to true, the `or` is short-circuited, else it calls the built-in `die` function which kills the process.

More precisely && and || are meant to stand in boolean tests, whereas and and or are meant to tie expressions together DSL style, as an alternative to if/then, like so:

   @current_user.logged_in? or redirect_to login_path
   @current_user.can? :do_this or render :status => 403
   shirt.blue? and return bar
   put_suit_on or put_pants_on

That's a good example

  shirt.blue? and return bar
would be equivalent to
  return bar if shirt.blue?
You can do the same with or and unless.

I find the postfix if and unless far more readable than the Perlish and and or operators. The "or die" construction for asserts is really amusing though.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.