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 |