I still don't understand this - why not just leave it undefined if it doesn't have a value?  Then you can just do checks for options[:puppetservice] instead of options[:puppetservice]!=''.