JoshCheek / seeing_is_believing

Displays the results of every line of code in your file
1.3k stars 54 forks source link

Raises error (Ruby 2.5.1) #136

Closed JoshCheek closed 5 years ago

JoshCheek commented 5 years ago

When I remove the annotation on obj.put(body: 'some-body'), then it works. When that is present, it doesn't work, saying:

#<Thread:0x00007fa6a0883198@/Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/evaluate_by_moving_files.rb:116 run> terminated with exception (report_on_exception is true):
/Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:180:in `load': undefined class/module Spy (ArgumentError)
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:180:in `extract_string'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:191:in `event_for'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:156:in `next_event'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:118:in `call'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:124:in `each'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/evaluate_by_moving_files.rb:116:in `block in evaluate_file'
/Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:180:in `load': undefined class/module Spy (ArgumentError)
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:180:in `extract_string'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:191:in `event_for'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:156:in `next_event'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:118:in `call'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/event_stream/consumer.rb:124:in `each'
    from /Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib/seeing_is_believing/evaluate_by_moving_files.rb:116:in `block in evaluate_file'
class Spy < BasicObject
  SEEN = []
  def initialize(path)
    @path = path
  end
  def method_missing(name, *args, &block)
    ::Spy::SEEN << {path: @path, name: name, args: args, block: block}
    ::Spy.new [*@path, name]
  end
end

require 'aws-sdk-s3'
aws = Aws::S3::Resource.new region: 'us-east-1', client: Spy.new([])
Spy::SEEN # => []
bucket = aws.bucket('bu.ck.et') # => #<Aws::S3::Bucket:0x00007fba1ca488b8 @name="bu.ck.et", @data=nil, @client=#<Spy:0x00007fba1ca48598>>
Spy::SEEN # => [{:path=>[], :name=>:inspect, :args=>[], :block=>nil}, {:path=>[:inspect], :name=>:to_s, :args=>[], :block=>nil}]
obj = bucket.object('test.csv') # => 
Spy::SEEN # => [{:path=>[], :name=>:inspect, :args=>[], :block=>nil}, {:path=>[:inspect], :name=>:to_s, :args=>[], :block=>nil}]
obj.put(body: 'some-body')      # => 
Spy::SEEN # => [{:path=>[], :name=>:inspect, :args=>[], :block=>nil}, {:path=>[:inspect], :name=>:to_s, :args=>[], :block=>nil}, {:path=>[], :name=>:put_object, :args=>[{:body=>"some-body", :bucket=>"bu.ck.et", :key=>"test.csv"}], :block=>nil}, {:path=>[:put_object], :name=>:data, :args=>[], :block=>nil}]

Also note, my $LOAD_PATH:

# => ["/Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/seeing_is_believing-3.6.0/lib",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/jmespath-1.4.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-partitions-1.98.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-sigv4-1.0.3/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-eventstream-1.0.1/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-sdk-core-3.24.1/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-sdk-kms-1.7.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/aws-sdk-s3-1.17.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/mini_portile2-2.3.0/lib",
#     "/Users/josh/.gem/ruby/2.5.1/gems/nokogiri-1.8.4/lib",
#     "/Users/josh/.gem/ruby/2.5.1/extensions/x86_64-darwin-17/2.5.0-static/nokogiri-1.8.4",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/x86_64-darwin17",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/site_ruby",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/vendor_ruby/2.5.0",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/vendor_ruby/2.5.0/x86_64-darwin17",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/vendor_ruby",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/2.5.0",
#     "/Users/josh/.rubies/ruby-2.5.1/lib/ruby/2.5.0/x86_64-darwin17"]