Skip to content

Fix minor Ruby warnings #461

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

viralpraxis
Copy link

The gem produces a lot of runtime warnings when running with -W:

enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: method redefined; discarding old <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: previous definition of <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: method redefined; discarding <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: previous definition of <enumerize-attr> was here
enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: method redefined; discarding old <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: previous definition of <enumerize-attr> was here
enumerize-2.8.1/lib/enumerize/attribute.rb:128: warning: method redefined; discarding old <enumerize-attr>

it seems reasonable to use the self-alias trick to suppress them. WDYT?

The gem produces a lot of runtime warnings when running with `-W`:

```
enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: method redefined; discarding old <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: previous definition of <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: method redefined; discarding <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: previous definition of <enumerize-attr> was here
enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: method redefined; discarding old <enumerize-attr>
enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: previous definition of <enumerize-attr> was here
enumerize-2.8.1/lib/enumerize/attribute.rb:128: warning: method redefined; discarding old <enumerize-attr>
```

it seems reasonable to use the self-alias trick to suppress them. WDYT?
@viralpraxis
Copy link
Author

hey @nashby, sorry for the ping, could you please take a look? 🙂

@nashby
Copy link
Member

nashby commented Jun 18, 2025

@viralpraxis hey! Could you provide sample app that reproduces these warnings? I believe there should be less tricky way of solving it but I have hard time reproducing it

@viralpraxis
Copy link
Author

@viralpraxis hey! Could you provide sample app that reproduces these warnings? I believe there should be less tricky way of solving it but I have hard time reproducing it

Here you go:

# frozen_string_literal: true

$VERBOSE = true

require "bundler/inline"

gemfile(true) do
  source "https://rubygems.org"

  gem "rails"
  gem "enumerize"
  gem "sqlite3"
end

require "active_record/railtie"

ENV["DATABASE_URL"] = "sqlite3::memory:"

class TestApp < Rails::Application
  config.load_defaults Rails::VERSION::STRING.to_f
  config.eager_load = false
  config.logger = Logger.new(File::NULL)
  config.secret_key_base = "secret_key_base"

  config.active_record.encryption.primary_key = "primary_key"
  config.active_record.encryption.deterministic_key = "deterministic_key"
  config.active_record.encryption.key_derivation_salt = "key_derivation_salt"
end

Rails.application.initialize!

ActiveRecord::Schema.define do
  create_table :posts, force: true do |t|
    t.string :kind
  end

  create_table :users, force: true do |t|
    t.string :kind
  end
end

ModelsMixin = Module.new do
  def self.included(base)
    base.extend Enumerize
    base.enumerize :kind, in: %w[a b c]
  end
end

class User < ActiveRecord::Base
  include ModelsMixin
  # use default kind
end

class Post < ActiveRecord::Base
  include ModelsMixin

  # override kind
  enumerize :kind, in: %w[a b c d]
end
$ ruby tmp.rb 2>&1 | grep warning
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: method redefined; discarding old kind
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:93: warning: previous definition of kind was here
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: method redefined; discarding old kind=
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:107: warning: previous definition of kind= was here
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: method redefined; discarding old kind_text
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:124: warning: previous definition of kind_text was here
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:128: warning: method redefined; discarding old kind_value
/home/viralpraxis/.asdf/installs/ruby/3.4.4/lib/ruby/gems/3.4.0/gems/enumerize-2.8.1/lib/enumerize/attribute.rb:128: warning: previous definition of kind_value was here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants