Bug #19929
closedWarnings for `mutex_m`, `drb` and `base64` appears while the gem spec has explicit dependencies
Description
Running some of Ruby on Rails unit test raises these warnings while it has explicit add_dependency entries https://github.com/rails/rails/blob/ae6fa7a048d0a0f79b0f8dd8566c7d499fd6f616/activesupport/activesupport.gemspec#L42-L45
warning: mutex_m which will be not part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile.
warning: drb which will be not part of the default gems since Ruby 3.4.0. Add drb to your Gemfile.
warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile.
Steps to reproduce¶
git clone https://github.com/rails/rails
cd rails
rm Gemfile.lock
bundle install
cd railties
RAILS_STRICT_WARNING=1 bin/test test/engine/commands_test.rb test/engine/test_test.rb
Expected behavior¶
It should finish successfully.
Actual behavior¶
It raises these warnings. Rails has the RAILS_STRICT_WARNING
environment variable to fail if any warnings.
warning: mutex_m which will be not part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile.
warning: drb which will be not part of the default gems since Ruby 3.4.0. Add drb to your Gemfile.
warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile.
$ ruby -v
ruby 3.3.0dev (2023-10-17T11:07:57Z :detached: 2a8ac8ead5) [x86_64-linux]
$ RAILS_STRICT_WARNING=1 bin/test test/engine/commands_test.rb test/engine/test_test.rb
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/notifications/fanout.rb:3: warning: mutex_m which will be not part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile.
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/parallelization.rb:3: warning: drb which will be not part of the default gems since Ruby 3.4.0. Add drb to your Gemfile.
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/message_encryptor.rb:4: warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile.
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/strict_warnings.rb:33:in `warn': /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/message_encryptor.rb:4: warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile. (RuntimeError)
from <internal:warning>:51:in `warn'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:248:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/message_encryptor.rb:4:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/encrypted_file.rb:5:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/encrypted_configuration.rb:4:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/application.rb:9:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails.rb:15:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/all.rb:5:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/test/abstract_unit.rb:15:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/test/engine/commands_test.rb:3:in `<top (required)>'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `require'
from /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/bundler/rubygems_integration.rb:250:in `block (2 levels) in replace_require'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/runner.rb:51:in `block in load_tests'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/runner.rb:51:in `each'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/runner.rb:51:in `load_tests'
from /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/runner.rb:43:in `run'
from /home/yahonda/src/github.com/rails/rails/tools/test.rb:18:in `<top (required)>'
from bin/test:5:in `require_relative'
from bin/test:5:in `<main>'
$ ruby -v
ruby 3.3.0dev (2023-10-17T11:07:57Z :detached: 2a8ac8ead5) [x86_64-linux]
$ gem -v
3.5.0.dev
$ bundle -v
Bundler version 2.5.0.dev
$
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to hsbt (Hiroshi SHIBATA)
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
Thanks always. I could reproduce that.
$ RAILS_STRICT_WARNING=1 bin/test test/engine/test_test.rb
/Users/hsbt/Documents/github.com/rails/rails/activesupport/lib/active_support/message_encryptor.rb:4: warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile.
/Users/hsbt/Documents/github.com/rails/rails/activesupport/lib/active_support/core_ext/object/json.rb:5: warning: bigdecimal which will be not part of the default gems since Ruby 3.4.0. Add bigdecimal to your Gemfile.
Run options: --seed 10928
# Running:
/Users/hsbt/Documents/github.com/rails/rails/activesupport/lib/active_support/message_encryptor.rb:4: warning: base64 which will be not part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile.
/Users/hsbt/Documents/github.com/rails/rails/activesupport/lib/active_support/core_ext/object/json.rb:5: warning: bigdecimal which will be not part of the default gems since Ruby 3.4.0. Add bigdecimal to your Gemfile.
/Users/hsbt/.local/share/gem/gems/mail-2.8.1/lib/mail/parsers/date_time_parser.rb:837: warning: statement not reached
/Users/hsbt/.local/share/gem/gems/mail-2.8.1/lib/mail/parsers/date_time_parser.rb:691: warning: assigned but unused variable - testEof
(snip)
These warnings should be suppressed. I will investigate this.
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
HEAD version of Bundler didn't install default gems if locked version is same version of default gems.
master of Ruby always uses default gems under the RbConfig::CONFIG['rubylibdir']
because latest version of default gems installed with master of Ruby.
We need to refer lockfile for warning feature. I fixed this at https://github.com/ruby/ruby/pull/8693.
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Status changed from Assigned to Closed
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Status changed from Closed to Assigned
The redundant warnings still happened.
$ RAILS_STRICT_WARNING=1 bin/test test/engine/test_test.rb
/Users/hsbt/.local/share/rbenv/versions/master/lib/ruby/gems/3.3.0+0/gems/minitest-5.20.0/lib/minitest.rb:3: warning: mutex_m which will no longer be part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile or gemspec.
Run options: --seed 58917
# Running:
(snip)
We should ignore RubyGems's paths under the RbConfig::CONFIG['rubylibdir']
.
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Status changed from Assigned to Closed
Ah, this warning is correct. mutex_m
is removed from rails/rails
.
https://github.com/rails/rails/commit/bcdeea5da7657375df21a856135ae7a66a8c3812
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
I removed mutex_m
dependency from minitest at https://github.com/minitest/minitest/pull/973