Skip to content

Rubinius incompatibility #30

Description

@jnardone

Ice_nine is trying to call methods on Rubinius structures like Hash::Trie.

This unfortunately breaks Ruby Grape, which depends on ice_nine (through virtus & axiom_types). There's a similar bug in the Rubinius tracker that points out this bug in ice_nine as well:
rubinius/rubinius#3694 which points out this problem from Rubinius's point of view. Seems to be some assumptions in ice_nine about native types that aren't guaranteed...

Using Rubinius 3.72:

irb(main):001:0> require 'ice_nine'
=> true
irb(main):002:0> h = { a: 1 }
=> {:a=>1}
irb(main):003:0> h2 = IceNine.deep_freeze(h)
NoMethodError: undefined method `default_proc' on an instance of Hash::Trie.
	from core/zed.rb:1413:in `default_proc (method_missing)'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer/hash.rb:22:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer.rb:100:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/support/recursion_guard.rb:36:in `guard'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer.rb:99:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer/object.rb:36:in `freeze_instance_variables'
	from core/array.rb:72:in `each'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer/object.rb:35:in `freeze_instance_variables'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer/object.rb:22:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer/hash.rb:21:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer.rb:100:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/support/recursion_guard.rb:36:in `guard'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer.rb:99:in `guarded_deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine/freezer.rb:41:in `deep_freeze'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/ice_nine-0.11.2/lib/ice_nine.rb:38:in `deep_freeze'
	from (irb):3
... 1 levels...
	from core/kernel.rb:1130:in `eval'
	from core/kernel.rb:585:in `loop'
	from core/proc.rb:20:in `call'
	from core/kernel.rb:1067:in `catch'
	from core/throw_catch.rb:8:in `register'
	from core/kernel.rb:1066:in `catch'
	from core/proc.rb:20:in `call'
	from core/kernel.rb:1067:in `catch'
	from core/throw_catch.rb:8:in `register'
	from core/kernel.rb:1066:in `catch'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/gems/rubysl-irb-2.1.1/bin/irb:12:in `__script__'
	from core/kernel.rb:572:in `load'
	from /Users/jnardone/.rbenv/versions/rbx-3.72/gems/bin/irb:22:in `__script__'
	from core/kernel.rb:572:in `load'
	from core/loader.rb:719:in `repl'
	from core/loader.rb:862:in `main'

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions