This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Checking Whether an Object Has Necessary Attributes | ||
---|---|---|
Code | Expected | Actual |
class Object def must_have_instance_variables(*args) vars = instance_variables.inject({}) { |h,var| h[var] = true; h } args.each do |var| unless vars[var] raise ArgumentError, %{Instance variable "@#{var} not defined"} end end end end module LightEmitting def LightEmitting_setup must_have_instance_variables :light_color, :light_intensity @on = false end # Methods that use @light_color and @light_intensity follow... end class Request def initialize gather_parameters # This is a virtual method defined by subclasses must_have_instance_variables :action, :user, :authentication end # Methods that use @action, @user, and @authentication follow... end class Object def must_support(*args) args.each do |method| unless respond_to? method raise ArgumentError, %{Must support "#{method}"} end end end end obj = "a string" obj.must_support :to_s, :size, "+".to_sym obj.must_support "+".to_sym, "-".to_sym |
ArgumentError: Must support "-" ... |
ArgumentError: Must support "-" from (irb):29:in `must_support' from (irb):27:in `must_support' from (irb):36 |