title: Paperclip Shoulda Matcher error (undefined method `gsub' for nil:NilClass)
body: <p>I have an extremely weird issue where a test passes and fails randomly.  Meaning, sometimes it'll pass and sometimes it'll fail.  It's an issue with paperclip-matchers (<a href="https://github.com/thoughtbot/paperclip" rel="nofollow">https://github.com/thoughtbot/paperclip</a>) with shoulda-matchers (<a href="https://github.com/thoughtbot/shoulda-matchers" rel="nofollow">https://github.com/thoughtbot/shoulda-matchers</a>).</p>
  
  <p>Let's say that I have a model that's written like this:</p>
  
  <pre><code>class Import &lt; ActiveRecord::Base
    has_attached_file :document
    validates_attachment :document, presence: true,
                         content_type: { content_type: ['application/vnd.ms-excel', 'application/csv', 'text/csv'] }
  end
  </code></pre>
  
  <p>And tests written like this:</p>
  
  <pre><code>require 'spec_helper'   
  
  describe Import do
    it { should have_attached_file(:document) }
    it { should validate_attachment_presence(:document) }
    it { should validate_attachment_content_type(:document).
      allowing('application/vnd.ms-excel', 'application/csv', 'text/csv') }
  end
  </code></pre>
  
  <p>The error I get is:</p>
  
  <pre><code>Failures:   
  
    1) Import should require presence of attachment document
       Failure/Error: it { should validate_attachment_presence(:document) }
       NoMethodError:
         undefined method `gsub' for nil:NilClass
       # ./spec/models/import_spec.rb:14:in `block (2 levels) in &lt;top (required)&gt;'
  </code></pre>
  
  <p>I've been Googling around for this and I can't seem to figure out why it is breaking.  I'm simply using the paperclip-matchers, which I have required properly according to the documentation in my spec_helper.rb</p>
  
  <p>Has anyone came across this issue?</p>
  
  <p>Thank you!</p>
  
  <p>Edit:</p>
  
  <p>Finally got the backtrace, except it happened for a different model this time.  This is the backtrace.  It seems to be an issue with paperclip matchers not being compatible with the latest version of rspec.  Has any come across this issue before and maybe have a workaround they can suggest for this specific problem?</p>
  
  <pre><code>   1) Element should require presence of attachment attachment
        Failure/Error: it { should validate_attachment_presence :attachment }
        NoMethodError:
          undefined method `gsub' for nil:NilClass
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/io_adapters/abstract_adapter.rb:23:in `original_filename='
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/io_adapters/stringio_adapter.rb:13:in `cache_current_values'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/io_adapters/stringio_adapter.rb:5:in `initialize'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/io_adapters/registry.rb:29:in `new'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/io_adapters/registry.rb:29:in `for'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/attachment.rb:96:in `assign'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/matchers/validate_attachment_presence_matcher.rb:48:in `no_error_when_valid?'
        # /usr/local/lib/ruby/gems/1.9.1/gems/paperclip-4.2.0/lib/paperclip/matchers/validate_attachment_presence_matcher.rb:22:in `matches?'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-expectations-3.0.2/lib/rspec/expectations/handler.rb:48:in `handle_matcher'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/memoized_helpers.rb:81:in `should'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:112:in `block (2 levels) in run_specs'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:112:in `map'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:112:in `block in run_specs'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/reporter.rb:54:in `report'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:108:in `run_specs'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:86:in `run'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:70:in `run'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:38:in `invoke'
        # /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-3.0.2/exe/rspec:4:in `&lt;top (required)&gt;'
        # /usr/local/bin/rspec:23:in `load'
        # /usr/local/bin/rspec:23:in `&lt;main&gt;'
  </code></pre>