You can pass a variety of value as a check target.
# Check of the basic value args "foo", :bar # If you pass a String or Symbol, determined by whether the value and to fully match args ["yes", "no"] # Determined by the OR conditions if you pass an array. This declaration accepts "yes" or "no" args [true, false] # This declaration accepts true or false args nil # This declaration accepts only nil # representation of `this method should return self` returns :self # If you pass a regular expression, determine whether a string matches the regular expression of interest args /.md$/ # If you pass the Range, determining whether the value is included in the range of interest (using Range#include?) args 0..100 # Correct if it is 0 or more and 100 or less of the value args 0...100 # Correct if the value of 0 or more and less than 100 # any: accept any value (including nil) args any # except: accept value except passed value args except(nil) args except(String) # respondable: Determine whether the method with the specified name has been defined (For Duck Typing) args respondable(:to_s) # Correct if the object that #to_s is defined (using `respond_to? :to_s`) args respondable(:read, :write) # Correct if the object that #read and #write are defined # array_of: Determined to be an array of the specified value args array_of(String) # Array that is composed of String args array_of([String, nil]) # Array that is composed of String or nil # hash_of: Determined to be a Hash with the specified key and value args hash_of(Symbol, String) # Hash that has key of Symbol and value of String # block: equals to [Proc, nil] - To use when you want to receive a block argument args block def block_receive_method(&callback) ... end