Month: January 2013
Default Values for Boolean Options in Ruby
Let’s say you read settings from a YAML file and have some sort of settings object. Then you check if certain options are set with custom values or you have to set default/fall-back values on them. If you are dealing with Boolean options you have to be careful … as I had to find out myself.
Initially you would probably do something like the following to set a default value on a Boolean option:
settings[:some_option] ||= true # set default value if nothing set
Do you see the problem? What happens if the option was deliberately set to
false
? You would overwrite it because both cases
nil
(i.e. nothing set) and
false
would evaluate to
false
in the context of the
||=
operator and you would in both cases assign the right hand value (and overriding an explicit user choice in one case) … *ouch*.
So the correct solution is something like the following:
settings[:some_option] = true if settings[:some_option].nil?
Just be careful … 😀
29C3
As you may have heard the 29c3 is over and there is a ton of great talks … 😀
A Mom’s Contract With Her Son
Awesome parenting: a mother’s contract for her son’s new iPhone. 😀
Joomla! Wold Conference 2012 Keynote: Changing the world with Open Source
Pascal Finette gave a great keynote at Joomla! World Conference 2012 talking about how Mozilla came to be and what they learned along the way. He shares insights on how to build a competitive product, a healthy community and maybe even a business around it, but developing and governing it the open source way.