# File lib/rspec/core/subject.rb, line 122 def its(attribute, &block) describe(attribute) do example do self.class.class_eval do define_method(:subject) do @_subject ||= if super().is_a?(Hash) && attribute.is_a?(Array) OpenStruct.new(super()).send(attribute.first) else attribute.to_s.split('.').inject(super()) do |target, method| target.send(method) end end end end instance_eval(&block) end end end