Skip to content
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

Add support for sub/superclasses (NoMethodError: undefined method `values' for nil ?) #49

Open
coneybeare opened this issue Aug 14, 2024 · 2 comments
Labels

Comments

@coneybeare
Copy link

coneybeare commented Aug 14, 2024

I have an older project, just updated to rails 6.1 and ruby 3. However, I am seeing an issue when trying to read the values from here, and not sure why

class PostVideoType < PostMediaType
  include Ruby::Enum

  define :RAW,          'Raw Video'
  define :GFYCAT,       'Gfycat'
  define :GIPHY,        'Giphy'
  define :KICKSTARTER,  'Kickstarter'
  define :INSTAGRAM,    'Instagram'
  define :IMGUR,        'Imgur'
  define :TWITTER,      'Twitter'
  define :VIDME,        'Vidme'
  define :VIMEO,        'Vimeo'
  define :VINE,         'Vine'
  define :YOUTUBE,      'YouTube'
end
[1] pry(main)> PostVideoType.keys
=> [:RAW, :GFYCAT, :GIPHY, :KICKSTARTER, :INSTAGRAM, :IMGUR, :TWITTER, :VIDME, :VIMEO, :VINE, :YOUTUBE]
[2] pry(main)> PostVideoType.value(:RAW)
=> "Raw Video"
[3] pry(main)> PostVideoType.values
NoMethodError: undefined method `values' for nil
from /Users/redacted/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/ruby-enum-1.0.0/lib/ruby-enum/enum.rb:126:in `values'

It doesn't appear that the values method is working correctly, but I can't see why.

@coneybeare
Copy link
Author

Ah, think I figured it out. I had include Ruby::Enum in the superclass PostMediaType, even though I put it here to try and simplify it. The @_enum_hash seems to have not been accessible that way. Moving include Ruby::Enum into every subclass directly, and removing from the super class works again.

@dblock
Copy link
Owner

dblock commented Aug 14, 2024

I think supporting superclass enums is a very desirable feature! Let's reopen this.

Want to try and write some (failing) specs and maybe an implementation?

@dblock dblock reopened this Aug 14, 2024
@dblock dblock changed the title NoMethodError: undefined method `values' for nil ? Add support for sub/superclasses (NoMethodError: undefined method `values' for nil ?) Aug 14, 2024
@dblock dblock added bug? and removed new feature labels Aug 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants