methods/setter_on_a_class_needs_a_class_method.rb

tests/_examples/methods/setter_on_a_class_needs_a_class_method.rb in the metorex repository.

module Settings
  def level=(value)
    @level = value
  end
end

class Widget
  def size=(value)
    @size = value
  end
end

[-> { Settings.level = 1 }, -> { Widget.size = 2 }, -> { Widget.color = 3 }].each do |assignment|
  assignment.call
rescue NoMethodError => error
  puts error.message
end

p Widget.class_variables

Output:

undefined method 'level=' for module Settings
undefined method 'size=' for class Widget
undefined method 'color=' for class Widget
[]