Keyword Args

I prefer to initialize internal data using keyword arguments.

class Display
  attr_reader :device
  
  def initialize(device: STDOUT)
    @device = STDOUT  
  end
  
  def puts(message = '')
    return if message.blank?
    
    device.puts message
  end
end

Often, as in the example shown, I provide defaults for these arguments. This is particularly good for dependency injection.

Sometimes, a method may have a variety of keywords passed depending on context.

Last updated