-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NameError: uninitialized constant Hashie::Extensions::Array #367
Comments
This was introduced in 3.4.5. I don't see it in 3.4.4 |
Uh oh. Maybe needs a require/autoload. A spec/example that actually reproduces this would be nice. Please PR. |
I'll see if I can fix it. |
See here for the omniauth code I forgot to include above. |
What do you propose the fix to be @jrafanie? |
@dblock either enforce people require hashie (can't here since we broke people in a patch release)... or require what's needed at the top of the array extension. I'll throw something up for review. |
I think the fact that |
It's unfortunate that this was a minor version increment I agree. We need at the very least an UPGRADING line. |
I'm very new to hashie but from looking at the code, it looks like you're not expected to require 'hashie/mash' without 'hashie'. With that said, that should be enforced in |
I am with you @jrafanie. I could yank 3.4.5 but I suspect a minority of people is requiring If you can PR an UPGRADING note that'd be great! |
Fixes hashie#367 While it's probably not something hashie wants to allow, previously this was possible so we shouldn't break this when going 3.4.4 to 3.4.5. As an example, omniauth requires hashie/mash alone: https://github.com/omniauth/omniauth/blob/d941c4bcb1eb52f3674dd46225808751dd6a1c2f/lib/omniauth/auth_hash.rb#L1 This appears to have been broken in hashie#358. Note, we can't write a test for this because we require 'hashie' in the spec_helper which properly defines the Hashie::Extensions::Array constant and autoloads the pretty_inspect here: https://github.com/intridea/hashie/blob/229ee36d7c6a07eff6d8a0434726e12b8c3a0223/lib/hashie.rb#L48 **Before** ``` 10:44:30 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' NameError: uninitialized constant Hashie::Extensions::Array Did you mean? Hashie::Array Array from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:3:in `<class:Array>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:2:in `<module:Hashie>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:1:in `<top (required)>' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `require' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `<top (required)>' ... ``` **After** ``` 10:44:40 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' => true irb(main):002:0> exit ```
This has broken me as well. |
Fixes hashie#367 While it's probably not something hashie wants to allow, previously this was possible so we shouldn't break this when going 3.4.4 to 3.4.5. As an example, omniauth requires hashie/mash alone: https://github.com/omniauth/omniauth/blob/d941c4bcb1eb52f3674dd46225808751dd6a1c2f/lib/omniauth/auth_hash.rb#L1 This appears to have been broken in hashie#358. Note, we can't write a test for this because we require 'hashie' in the spec_helper which properly defines the Hashie::Extensions::Array constant and autoloads the pretty_inspect here: https://github.com/intridea/hashie/blob/229ee36d7c6a07eff6d8a0434726e12b8c3a0223/lib/hashie.rb#L48 **Before** ``` 10:44:30 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' NameError: uninitialized constant Hashie::Extensions::Array Did you mean? Hashie::Array Array from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:3:in `<class:Array>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:2:in `<module:Hashie>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:1:in `<top (required)>' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `require' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `<top (required)>' ... ``` **After** ``` 10:44:40 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' => true irb(main):002:0> exit ```
Fixes hashie#367 While it's probably not something hashie wants to allow, previously this was possible so we shouldn't break this when going 3.4.4 to 3.4.5. As an example, omniauth requires hashie/mash alone: https://github.com/omniauth/omniauth/blob/d941c4bcb1eb52f3674dd46225808751dd6a1c2f/lib/omniauth/auth_hash.rb#L1 This appears to have been broken in hashie#358. Note, we can't write a test for this because we require 'hashie' in the spec_helper which properly defines the Hashie::Extensions::Array constant and autoloads the pretty_inspect here: https://github.com/intridea/hashie/blob/229ee36d7c6a07eff6d8a0434726e12b8c3a0223/lib/hashie.rb#L48 **Before** ``` 10:44:30 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' NameError: uninitialized constant Hashie::Extensions::Array Did you mean? Hashie::Array Array from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:3:in `<class:Array>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:2:in `<module:Hashie>' from /Users/joerafaniello/Code/hashie/lib/hashie/array.rb:1:in `<top (required)>' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `require' from /Users/joerafaniello/Code/hashie/lib/hashie/mash.rb:2:in `<top (required)>' ... ``` **After** ``` 10:44:40 ~/Code/hashie (master) (2.3.1) + be irb irb(main):001:0> require 'hashie/mash' => true irb(main):002:0> exit ```
Broken records are we.. |
I released hashie 3.4.6 with this fix, thanks everyone. |
phew, quick work guys! Ran |
* Refactor "ensured restart" to a resource * Update Gemfile hashie/hashie#367 * Don't rely on name to determine package for splunk_restart * Test formatting * Hashie issue fixed * Fix integration tests for Windows * Try testing for both Chef <= 12.13 and Chef >= 12.14 * Exclude fix? * Rubocop * Use Ruby 2.3.1 instead of 2.2.5
https://github.com/intridea/hashie/blob/93b941d653cf8cad14933b498ffc6808457b86b6/lib/hashie/array.rb#L3 references a class that has not yet been loaded.
Similar error on https://github.com/intridea/hashie/blob/93b941d653cf8cad14933b498ffc6808457b86b6/lib/hashie/array.rb#L4
The text was updated successfully, but these errors were encountered: