HomePhorge

(maint) Fix can't modify frozen Symbol error on Ruby 2.1.0
d02820a116d5Unpublished

Unpublished Commit ยท Learn More

Repository Importing: This repository is still importing.

Description

(maint) Fix can't modify frozen Symbol error on Ruby 2.1.0

Without this patch we're getting the following error on Ruby 2.1.0:
can't modify frozen Symbol (Puppet::Error). This problem is caused by
our monkey patching which attempts to cache Symbol#to_proc return values
instead of creating new instances on every call.

As it turns out, the caching optimization is not necessary on Ruby 1.9.3
and later because Symbol#to_proc implements its own caching system in
these versions.

Here is the full error this patch avoids by not monkey patching
Symbol#to_proc on versions of Ruby prior to 1.9.3.

bundle exec rspec -fd spec/integration/agent/logging_spec.rb
/workspace/serious/src/puppet/lib/puppet/util/monkey_patches.rb:79:in `to_proc': Could not autoload puppet/type/component: can't modify frozen Symbol (Puppet::Error)
  from /workspace/serious/src/puppet/lib/puppet/transaction/event.rb:15:in `<class:Event>'
  from /workspace/serious/src/puppet/lib/puppet/transaction/event.rb:8:in `<top (required)>'
  from /workspace/serious/src/puppet/lib/puppet/transaction.rb:13:in `require'
  from /workspace/serious/src/puppet/lib/puppet/transaction.rb:13:in `<class:Transaction>'
  from /workspace/serious/src/puppet/lib/puppet/transaction.rb:11:in `<top (required)>'
  from /workspace/serious/src/puppet/lib/puppet/type/component.rb:4:in `require'
  from /workspace/serious/src/puppet/lib/puppet/type/component.rb:4:in `<top (required)>'
  from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:61:in `load'
  from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:61:in `load_file'
  from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:202:in `load'
  from /workspace/serious/src/puppet/lib/puppet/metatype/manager.rb:159:in `type'
  from /workspace/serious/src/puppet/lib/puppet/type.rb:2466:in `<top (required)>'
  from /workspace/serious/src/puppet/lib/puppet.rb:175:in `require'
  from /workspace/serious/src/puppet/lib/puppet.rb:175:in `<top (required)>'
  from /workspace/serious/src/puppet/spec/spec_helper.rb:16:in `require'
  from /workspace/serious/src/puppet/spec/spec_helper.rb:16:in `<top (required)>'
  from /workspace/serious/src/puppet/spec/integration/agent/logging_spec.rb:2:in `require'
  from /workspace/serious/src/puppet/spec/integration/agent/logging_spec.rb:2:in `<top (required)>'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `block in load_spec_files'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `map'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load_spec_files'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:22:in `run'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:69:in `run'
  from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun'

Details

Provenance
Jeff McCune <jeff@puppetlabs.com>Authored on
Kylo Ginsberg <kylo@puppetlabs.com>Committed on Jan 22 2014, 7:32 AM
vanmeeuwenPushed on Jun 2 2015, 2:22 PM
Parents
rPUb5474cfad97b: (PUP-1389) Merge branch 'issue/stable/PUP1389-segfault' into stable
Branches
Unknown
Tags
Unknown

Event Timeline

Kylo Ginsberg <kylo@puppetlabs.com> committed rPUd02820a116d5: (maint) Fix can't modify frozen Symbol error on Ruby 2.1.0 (authored by Jeff McCune <jeff@puppetlabs.com>).Jan 22 2014, 7:32 AM